Главная » Разработка для Android » Вывод уведомлений типа Toast

0

Toast — диалоговое окно, которое остается видимым всего несколько секунд перед тем, как исчезнуть.  Этот вид уведомлений не перебирает  на себя фокус и не считается модальным, поэтому он не прерывает работу активного приложения.

Toast  идеально  подходит  для оповещения пользователей о событиях, не заставляя их при этом открывать Активность или читать текст уведомле- ния. Toast предоставляет безупречный механизм для уведомления пользо-

вателя о событиях, происходящих в фоновых Сервисах, не приостанавливая при этом работу активных приложений.

Класс  Toast  включает  статический метод makeText,  который  создает стандартное окно с уведомлением. Чтобы создать новое уведомление  типа Toast,  передайте  методу makeText  объект Context, принадлежащий при- ложению, текст сообщения, который нужно отобразить, а также время его отображения (LENGTH_SHORT или LENGTH_LONG). Как только объ- ект Toast создан, отобразите его на экране, вызвав метод show, как показано в листинге 9.14.

Листинг 9.14. Отображение уведомления типа Toast

Context context = getApplicationContext(); String msg = "To health and happiness!"; int duration = Toast.LENGTH_SHORT;

Toast toast = Toast.makeText(context, msg, duration);

toast.show();

Уведомление типа Toast показано  на рис. 9.1. Оно будет отображаться на экране около двух секунд, прежде чем исчезнет. Приложение, поверх которого  оно выводится,  остается  полностью  отзывчивым и может взаи- модействовать с пользователем, даже когда Toast видим.

ll.addView(cv, new LinearLayout.LayoutParams(lHeight, lWidth));

ll.addView(myTextView, new LinearLayout.LayoutParams(lHeight, lWidth));

ll.setPadding(40, 50, 0, 50);

toast.setView(ll);

toast.show();

Итоговое уведомление  Toast будет выглядеть, как на рис. 9.2.

Рис. 9.2.

Использование уведомлений типа Toast в рабочих потоках

Как элемент графического  интерфейса Toast должен быть вызван в по- токе GUI,  иначе существует  риск выброса  межпотокового исключения. В листинге  9.17 объект Handler используется для гарантии  того, что уве- домление Toast было вызвано в потоке GUI.

Листинг 9.17. Вызов Toast в потоке GUI

private void mainProcessing() {

Thread thread = new Thread(null, doBackgroundThreadProcessing, "Background");

Продолжение ?

Листинг 9.17 (продолжение)

thread.start();

}

private Runnable doBackgroundThreadProcessing = new Runnable() {

public void run() {

backgroundThreadProcessing();

}

};

private void backgroundThreadProcessing() {

handler.post(doUpdateGUI);

}

// Объект Runnable, который вызывает метод из потока GUI

private Runnable doUpdateGUI = new Runnable() {

public void run() {

Context context = getApplicationContext(); String msg = "To open mobile development!"; int duration = Toast.LENGTH_SHORT;

Toast.makeText(context, msg, duration).show();

}

};

Источник: Майер P. Android 2 : программирование приложений для планшетных компьютеров и смартфонов : [пер. с англ. ] / Рето Майер. — М. : Эксмо, 2011. — 672 с. — (Мировой компьютерный бестселлер).

По теме:

  • Комментарии