Делаем пользовательскую форму для отправки сообщения
Главная » Делаем пользовательскую форму для отправки сообщения

Во многих приложениях можно увидеть форму обратной связи для отправки сообщений автору приложения, хотя, конечно, это чаще происходит через комментарии в Google Play. Но тем не менее, такая форма обратной связи тоже может быть полезна и сегодня мы научимся ее создавать. В процессе создания формы мы вспомним (или научимся) как работать с такими элементами, как EditText, Spinner, Checkbox, Button. Итак, мы создадим приложение, которое будет изображать окно отправки письма с отзывами о программе или своими предложениями к создателю приложения на его электронную почту. Стоит сразу отметить, что отправлять сообщения программа не будет, мы просто научимся делать подобную форму и поработаем с указанными выше элементами, а вот процесс реальной отправки сообщения мы рассмотрим позже в другом уроке.

Создаем новое приложение, как обычно названия можно оставить по умолчанию, а можете ввести что то свое. Выбираем activity Blank Activity.

Сначала немного разберемся в том, какую именно информацию мы хотим получать от пользователей. Мы добавим поля для ввода пользователем своего имени, электронной почты, типа ответа, например, похвала, жалоба, предложение или отчет об ошибке, текст самого сообщения и функцию обратного ответа пользователю о благополучной доставке сообщения. Работы не мало, но и не слишком много.

Начнем с создания интерфейса приложения. Поместим все будущие элементы программы в теге ScrollView, таким образом мы будем уверенны в том, что приложение будет нормально отображать все элементы на разных размерах экрана. В файле activity_main.xml добавим следующий код:

<?xml version="1.0" encoding="utf-8"?>
<ScrollView
 xmlns:android="http://schemas.android.com/apk/res/android"
 android:id="@+id/ScrollView01"
 android:layout_width="wrap_content"
 android:layout_height="wrap_content"
 android:scrollbars="vertical">
 
 <LinearLayout
 android:layout_width="fill_parent"
 android:orientation="vertical"
 android:layout_height="fill_parent">

 </LinearLayout>
</ScrollView>

Теперь начнем добавлять сюда необходимые элементы. Добавим элемент TextView, в котором будет отображаться текст с названием окна и предложением пользователю отправить свое сообщение. Текст в этом элементе нужно бы задать через строковые ресурсы @string, но мы просто введем название поля вручную:

<TextView
 android:id="@+id/TextViewTitle"
 android:layout_width="wrap_content"
 android:layout_height="wrap_content"
 android:text="Окно отправки отзыва"
 android:textSize="14pt">
 </TextView>

Теперь нужно создать элемент EditText, в котором пользователь сможет ввести свое имя. Назовем этот элемент EditTextName. Будем использовать подсказку, команду hint, чтобы было понятно, что нужно вводить в этом поле. Опять же, я пошел путем страданий и ввода всего текста вручную, что не очень грамотно, вы можете усовершенствовать это и создать в файле strings.xml все необходимые строки. Итак, добавляем EditText:

<EditText
 android:id="@+id/EditTextName"
 android:layout_height="wrap_content"
 android:hint="Введите имя"
 android:inputType="textPersonName"
 android:layout_width="fill_parent">
 </EditText>

Добавим еще один элемент EditText, в нем пользователь должен будет ввести свой электронный адрес. Назовем поле EditTextEmail, также как и в предыдущем элементе, добавим подсказку hint о том, что нужно вводить в этом поле:

<EditText
 android:id="@+id/EditTextEmail"
 android:layout_height="wrap_content"
 android:hint="Введите свой e-mail"
 android:inputType="textEmailAddress"
 android:layout_width="fill_parent">
 </EditText>

Далее мы создаем элемент под названием Spinner, который позволит выбрать тип отправляемого сообщения, что это будет: похвала, жалоба, предложение или же отчет об ошибке. Назовем этот Spinner элемент SpinnerFeedbackType. Для начала нам нужно пройти в файл strings.xml и добавить туда строки, которые будут отвечать за пункты выбора в Spinner. Открываем файл strings.xml и добавляем туда следующее:

<string name="feedbacktype">Тип сообщения</string>
 <string name="feedbacktype1">Похвала</string>
 <string name="feedbacktype2">Жалоба</string>
 <string name="feedbacktype3">Предложение</string>
 <string name="feedbacktype4">Отчет об ошибке</string>

Теперь нам нужно создать строковый массив. В папке res/values создаем новый файл по имени arrays.xml и добавим туда следующее:

<?xml version="1.0" encoding="utf-8"?>
<resources>
 <string-array name="feedbacktypelist">
 <item>@string/feedbacktype1</item>
 <item>@string/feedbacktype2</item>
 <item>@string/feedbacktype3</item>
 <item>@string/feedbacktype4</item>
 </string-array>
</resources>

После проделанных выше шагов мы наконец то готовы создать наш Spinner:

<Spinner
 android:id="@+id/SpinnerFeedbackType"
 android:layout_height="wrap_content"
 android:prompt="@string/feedbacktype"
 android:layout_width="fill_parent"
 android:entries="@array/feedbacktypelist">
 </Spinner>

Прямо под созданным элементом Spinner нужно создать еще одно поле EditText в которое пользователь будет вводить текст своего сообщения. Назовем этот элемент EditTextFeedbackBody, также настроим подсказку hint о типе текста, который нужно вводить. Чтобы дать пользователю больше пространства и свободы при вводе текста ответа, настроем команду inputType на textMultiLine и настроим количество линий на 5:

<EditText
 android:id="@+id/EditTextFeedbackBody"
 android:layout_height="wrap_content"
 android:hint="Введите текст сообщения"
 android:inputType="textMultiLine"
 android:lines="5"
 android:layout_width="fill_parent">
 </EditText>

Далее мы должны добавить нашему приложению элемент CheckBox, в нем пользователю будет предложено выбрать, хочет ли он получить отчет о том, что его сообщение успешно дошло по адресу или же нет:

<CheckBox
 android:id="@+id/CheckBoxResponse"
 android:layout_height="wrap_content"
 android:text="Желаете получить ответ?"
 android:layout_width="fill_parent">
 </CheckBox>

Ну и под конец работы с интерфейсом программы в файле activity_main.xml, добавим кнопку отправки сообщения Button. Настроим для нашей кнопочки текст с помощью атрибута text и зададим ей нажатие:

<Button
 android:id="@+id/ButtonSendFeedback"
 android:layout_height="wrap_content"
 android:text="Отправить сообщение"
 android:onClick="sendFeedback"
 android:layout_width="fill_parent">
 </Button>

Работа с layout файлом нашей программы фактически готова. На данный момент окно программы должно выглядеть следующим образом:

Вид окна приложения

Теперь переходим к работе к файлу java класса нашего приложения. По умолчания он имеет имя MainActivity.java. Первым делом добавим метод обработки нажатия на кнопку (как это сделать вы можете увидеть в уроке о Button):

public void sendFeedback(View button) {
//Здесь происходит обработка нажатия на кнопку
}

Нам нужно организовать чтение программой введенных пользователем данных во все элементы EditText. Для этого 

final EditText nameField = (EditText) findViewById(R.id.EditTextName);
 String name = nameField.getText().toString();

 final EditText emailField = (EditText) findViewById(R.id.EditTextEmail);
 String email = emailField.getText().toString();

 final EditText feedbackField = (EditText) findViewById(R.id.EditTextFeedbackBody);
 String feedback = feedbackField.getText().toString();

Таким же образом инициализируем и обработаем объекты Spinner и CheckBox:

final Spinner feedbackSpinner = (Spinner) findViewById(R.id.SpinnerFeedbackType);
 String feedbackType = feedbackSpinner.getSelectedItem().toString();

 final CheckBox responseCheckbox = (CheckBox) findViewById(R.id.CheckBoxResponse);
 boolean bRequiresResponse = responseCheckbox.isChecked();

После этого мы можем компилировать и запустить наше приложение. Вы увидите созданную нами почтовую форму:

работающее готовое приложение

Полный код файла activity_main.xml и MainActivity.java.

Категория: Уроки программирования | Просмотров: 993 | Добавил: Oleg | Теги: обратная связь, e-mail, программирование Android, сообщение, пользовательская форма | Рейтинг: 0.0/0
Всего комментариев: 0
avatar