Показать сообщение отдельно
Старый 26.12.2015, 11:24   #4
Жека
Дэвелопер
 
Регистрация: 04.09.2005
Адрес: Красноярск
Сообщений: 1,376
Написано 491 полезных сообщений
(для 886 пользователей)
Ответ: Полезные находки

Использование AlertDialog.Builder

1. Использовать android.support.v7.app.AlertDialog - для получения стиля material design, ничего делать не нужно, диалог сразу будет в стиле материал при импорте суппорт-версии.

2. Создание диалога
AlertDialog dialog = builder.create();

a) если после создания назначать кнопки через setXXXButton, то их не будет в диалоге. это очевидно.

б) назначение лисенеров, например,
builder.setOnDismissListener
после создания диалога - лисенер не применится. тоже очевидно, но можно не доглядеть. как?
например, какая-то вьюха внутри диалога должна по нажатию закрывать диалог. значит, нам нужно создать диалог раньше, чем это вьюшку. и значит, лисенеры нужно навесить ещё раньше. есть вероятность несоблюдения этого порядка.

в) при нажатии на диалоговские кнопки, диалог закрывается. это не всегда уместно. часто нужна проверка введённых данных.
для этого ставим кнопке listener в null, и далее после создания диалога
Button b dialog.getButton(AlertDialog.BUTTON_POSITIVE);
b.setOnClickListener(new View.OnClickListener() {
    @
Override
    
public void onClick(View v) {
        
/** делаем что-то **/
    
}
}); 
также можно скрывать / показывать эти кнопки как любые другие вьюхи через setVisibility.

г) Назначение dialog.setOnShowListener() после вызова dialog.show() - слушатель не сработает.
(Offline)
 
Ответить с цитированием
Сообщение было полезно следующим пользователям:
St_AnGer (26.12.2015)