Пример: Скачать среду можно с сайта для разработчиков Android (http://developer.android.com/sdk/index.html). Там скачать можно только Android Studio |
Создание многоэкранного приложения
8.3 Создание диалогового окна
1. Создайте новый проект Dialog
2. Создайте кнопку на вашей активности и назовите ее "Выбрать фон" (для этого нужно в файле strings создать строку соответствующего содержания). Присвойте активности и кнопке id.
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" android:id="@+id/relativelayout" android:layout_width="fill_parent" android:layout_height="fill_parent" > <Button android:id="@+id/background_button" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_alignParentTop="true" android:layout_centerHorizontal="true" android:layout_marginTop="174dp" android:text="@string/bg"/> </RelativeLayout>Листинг 8.5. Код файла activity_main.xml
3. Наше приложение меняет фон на выбранный. Значит, нам нужно создать цвета и их названия в файле strings.xml. Как вы помните, этот файл находится в папке values, которая в свою очередь находится в папке res. Также создадим строку messages, которая нам понадобятся для диалогового окна.
<?xml version="1.0" encoding="utf-8"?> <resources> <string name="app_name">Dialog</string> <string name="action_settings">Settings</string> <string name="bg">Выбрать фон</string> <string name="message">Хотите поменять фон?</string> <color name="redColor">#FF0000</color> <color name="yellowColor">#FFFF00</color> <color name="greenColor">#00FF00</color> <string name="red">Красный</string> <string name="yellow">Жёлтый</string> <string name="green">Зелёный</string> </resources>Листинг 8.6. Файл strings.xml
4. Перейдем в файл MainActivity.java. Создайте следующие переменные:
private Button bgButton; public RelativeLayout relativeLayout; Context context;
Если компилятор подчеркивает тип и сообщает об ошибке, например, подчеркивает Context, наведите курсор на подчеркнутое слово: должно появиться контекстное меню, предлагающее варианты, как можно исправить ошибку. Выберете Import 'Context', чтобы импортировать библиотеку.
5. Теперь нужно описать, что будет происходить при нажатии на нашу кнопку.
Для начала свяжем объекты из activity_main.xml и переменные в MainActivity.java через id (в onCreate):
bgButton = (Button)findViewById(R.id.background_button); relativeLayout = (RelativeLayout)findViewById(R.id.relativelayout);
Context - это объект, который предоставляет доступ к базовым функциям приложения.
Добавляем в код
context = MainActivity.this;
6. Теперь нужно добавить событие onClick и навесить на кнопку OnClickListener. Добавляем в заголовок класса MainActivity implements OnClickListener. Чтобы связать кнопку и Listener в onCreate пишем
bgButton.setOnClickListener(this);
Создадим теперь событие onClick
@Override public void onClick(View v){ }
В этом объекте создаем собственно диалог и называем его:
AlertDialog.Builder builder = new AlertDialog.Builder(this); builder.setTitle(R.string.message); AlertDialog alert = builder.create(); alert.show();
Мы будем создавать диалоговое окно, предоставляющее пользователю выбор из списка. Для этого потребуется ещё одна переменная, которая сформирует список из имеющихся строк.
final CharSequence[] items = { getText(R.string.red), getText(R.string.yellow), getText(R.string.green) };
7. Сформируем собственно наш список и зададим еще один Listener, который будет менять цвет фона на выбранный:
builder.setItems(items, new DialogInterface.OnClickListener() { public void onClick(DialogInterface dialog, int item) { switch (item) { case 0: { relativeLayout.setBackgroundResource(R.color.redColor); break;} case 1: {relativeLayout.setBackgroundResource(R.color.yellowColor); break;} case 2: {relativeLayout.setBackgroundResource(R.color.greenColor); break;} }
8. Осталось добавить в каждый case всплывающие окна Toast, и приложение полностью готово!
Toast.makeText(context, R.string.green, Toast.LENGTH_LONG).show(); package com.mypackage.dialog; import android.app.Activity; import android.app.AlertDialog; import android.content.Context; import android.content.DialogInterface; import android.os.Bundle; import android.view.View; import android.view.View.OnClickListener; import android.widget.Button; import android.widget.RelativeLayout; import android.widget.Toast; public class MainActivity extends Activity implements OnClickListener { private Button bgButton; public RelativeLayout relativeLayout; Context context; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); bgButton = (Button) findViewById(R.id.background_button); bgButton.setOnClickListener(this); context = MainActivity.this; relativeLayout = (RelativeLayout)findViewById(R.id.relativelayout); } @Override public void onClick(View v) { final CharSequence[] items = {getText(R.string.red) , getText(R.string.yellow),getText(R.string.green) }; AlertDialog.Builder builder = new AlertDialog.Builder(this); builder.setTitle(R.string.message); builder.setItems(items, new DialogInterface.OnClickListener() { public void onClick(DialogInterface dialog, int item) { switch (item) { case 0: { relativeLayout.setBackgroundResource(R.color.redColor); Toast.makeText(context, R.string.red, Toast.LENGTH_LONG).show(); break;} case 1: {relativeLayout.setBackgroundResource(R.color.yellowColor); Toast.makeText(context, R.string.yellow, Toast.LENGTH_LONG).show(); break;} case 2: {relativeLayout.setBackgroundResource(R.color.greenColor); Toast.makeText(context, R.string.green, Toast.LENGTH_LONG).show(); break;} } } }); AlertDialog alert = builder.create(); alert.show(); } }Листинг 8.7. Код файла MainActivity.java