Создание и обработка формы

By | 21.01.2014

Для начала придумайте форму, которую хотели бы разместь в приложении. У меня получилась форма связи, состоящая из следующих полей: имя, телефон, email, комментарий, галочка с просьбой продублировать письмо и две кнопки, одна для отправки, другая для очистки формы.

Назначаем все элементам формы ID, по такому примеру android:id=»@+id/fieldName». Можете сделать placeholder через android:hint. Также не забываем пользоваться константами android:text=»@string/label_name».

Для обработки формы, пишем в кнопке отправки следующее android:onClick=»send_form». В данном случае send_form это метод, который будет обрабатывать форму.

Создаём метод в классе Main, который будет иметь следующую сигнатуру public void send_form(View view).

Создаём Intent, например так Intent intent = new Intent(this, Second.class);. Дальше нужно получить значения полей, я не буду копировать все поля, а напишу только те, что отличаются по реализации:

// получаем текстовое значение поля ввода
EditText fieldName = (EditText) findViewById(R.id.fieldName);
intent.putExtra("FORM_NAME", fieldName.getText().toString());
 
// получаем булевое состояние checkbox
CheckBox filedCheck = (CheckBox) findViewById(R.id.filedCheck);
intent.putExtra("FORM_CHECK", filedCheck.isChecked());

Через putExtra передаём параметры в следующее activity. Правилом хорошего тона будет проверить то, что вводит пользователь, точнее ввел он что-нибудь или нет. Проверяется это довольно просто if(fieldName.getText().length() != 0), т.е. проверяем длинну введённой строки.

Для того, чтобы уведомить пользователя, что он не заполнил одно из полей, в главной action я создал скрытый TextView, который имеет красный фон белый текст. Вот некоторые из его свойств:

android:id="@+id/errorMessage"
android:background="#FF0033"
android:padding="5dp"
android:textColor="#FFFFFF"
android:visibility="gone"

А чтобы внести в него сообщение об ошибке и отобразить, делаем следующее:

TextView errorMessage = (TextView) findViewById(R.id.errorMessage);
errorMessage.setText("ОШИБКА! Не все обязательные поля заполнены");
errorMessage.setVisibility(View.VISIBLE);

Если поля заполнены, стартуем второе activity таким образом startActivity(intent);.

Теперь переходим во второй класс и правим метод onCreate. Получаем intent Intent intent = getIntent(); и поля через него же String form_name = intent.getStringExtra(«FORM_NAME»);, ну а дальше останется придумать, что делать с этими данными. Т.к. мы просто учимся, я вывел их на экран, вот код:

// значение текстового поля
TextView confirmName = (TextView) findViewById(R.id.confirmName);
confirmName.setText(form_name);
 
// значение checkbox
TextView confirmCheck = (TextView) findViewById(R.id.confirmCheck);
 
// вывод состояния чекбокса
if(form_check)
    confirmCheck.setText("Да");
else confirmCheck.setText("Нет");

Ну вот и весь урок, не сложно ведь?! 🙂

Callback Callback Callback