3. Наше приложение меняет фон на выбранный. Значит, нам нужно создать цвета и их названия в файле strings.xml. Как вы помните, этот файл находится в папке values, которая в свою очередь находится в папке res. Также создадим строку messages, которая нам понадобятся для диалогового окна.
Dialog
Settings
Выбрать фон
Хотите поменять фон?
#FF0000
#FFFF00
#00FF00
Красный
Жёлтый
Зелёный
Листинг 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
Скриншоты работающего приложения
увеличить изображение
Рис. 8.3. Приложение "Dialog", запущенное на эмуляторе
увеличить изображение
Рис. 8.4. Диалоговое окно
увеличить изображение
Рис. 8.5. Выбран зеленый фон
Рис. 8.6. Приложение "Dialog", запущенное на устройстве
Достарыңызбен бөлісу: |