Урок 60. Диалоги. AlertDialog: Title, Message, Icon, Buttons

Обсуждение уроков
Аватара пользователя
Mikhail_dev
Сообщения: 2386
Зарегистрирован: 09 янв 2012, 14:45
Откуда: Самара

Re: Урок 60. Диалоги. AlertDialog: Title, Message, Icon, But

Сообщение Mikhail_dev » 16 янв 2014, 12:21

Вопрос в том, что как узнать какую кнопку из двух нажал пользователь?
[syntax=java5]
DialogInterface.OnClickListener dialogClickListener = new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
switch (which){
case DialogInterface.BUTTON_POSITIVE:
//Нажата кнопка Да
break;

case DialogInterface.BUTTON_NEGATIVE:
//Нажата кнопка нет
break;
}
}
};

AlertDialog.Builder builder = new AlertDialog.Builder(this);
builder.setMessage("Are you sure?").setPositiveButton("Yes", dialogClickListener)
.setNegativeButton("No", dialogClickListener).show();
[/syntax]
А можете показать пример? А то я пробовал делать фрагментДиалог
Нет, я не делаю фрагментДиалоги, я делаю фрагменты. ФрагментДиалоги у меня тоже есть, но их стало гораздо меньше. Я сам того не понимая пришел к выводу, что не стоит плодить много диалогов, потому как это геморрой и много чего сделать будет нельзя. К примеру как вы сделаете кнопку назад к примеру с 3 диалога во второй?
Мой совет вам. Не делайте очередь диалогов. Максимум один диалог по необходимости.

Digetix
Сообщения: 117
Зарегистрирован: 12 окт 2012, 15:31

Re: Урок 60. Диалоги. AlertDialog: Title, Message, Icon, But

Сообщение Digetix » 16 янв 2014, 14:28

m090050 писал(а):Не делайте очередь диалогов. Максимум один диалог по необходимости.
Извините меня, но я уже запутался. Приведу конкретный пример. Мне нужно создать 3 диалога, один диалог об отключенном интернете, один об отключенном GPS и ещё один об отключенном Network Location. Так вот я хочу создать некий "шаблон" диалога и в разных частях активити его вызывать. Я так понимаю, что через AlertDialog.Builder можно создать функцию с параметрами название диалога, сообщение диалога и название кнопок, а вот как узнать какую кнопку нажали, чтоб в одном случае перейти в настройки интернета, в другом случае перейти в настройки GPS, в третьем случае перейти в настройки местоположения.

Аватара пользователя
Mikhail_dev
Сообщения: 2386
Зарегистрирован: 09 янв 2012, 14:45
Откуда: Самара

Re: Урок 60. Диалоги. AlertDialog: Title, Message, Icon, But

Сообщение Mikhail_dev » 16 янв 2014, 14:48

У Вас стандартный диалог или Вы писали свой Layout со своими кнопками?

Digetix
Сообщения: 117
Зарегистрирован: 12 окт 2012, 15:31

Re: Урок 60. Диалоги. AlertDialog: Title, Message, Icon, But

Сообщение Digetix » 16 янв 2014, 15:18

Свой, со своими кнопками

Аватара пользователя
Mikhail_dev
Сообщения: 2386
Зарегистрирован: 09 янв 2012, 14:45
Откуда: Самара

Re: Урок 60. Диалоги. AlertDialog: Title, Message, Icon, But

Сообщение Mikhail_dev » 16 янв 2014, 15:23

И в чем проблема написать разные методы с разными обработчиками, а не один метод?

Digetix
Сообщения: 117
Зарегистрирован: 12 окт 2012, 15:31

Re: Урок 60. Диалоги. AlertDialog: Title, Message, Icon, But

Сообщение Digetix » 16 янв 2014, 15:27

m090050 писал(а):И в чем проблема написать разные методы с разными обработчиками, а не один метод?
Ну так если таких диалогов нужно будет 8 шт, то для всех прописывать? Я думал можно сделать какой-то шаблон

Аватара пользователя
Mikhail_dev
Сообщения: 2386
Зарегистрирован: 09 янв 2012, 14:45
Откуда: Самара

Re: Урок 60. Диалоги. AlertDialog: Title, Message, Icon, But

Сообщение Mikhail_dev » 16 янв 2014, 15:35

А каким образом вы вы предлагаете определять какой обработчик сейчас вызывать? Передавать какой-то параметр и после у switch case его смотреть? И получится у Вас не метод, а этакое извращение, где крутится много логики ненужной. Я не вижу проблем в написании 8 методов для 8 диалогов.
P.S. "Разделяй и властвуй".

Digetix
Сообщения: 117
Зарегистрирован: 12 окт 2012, 15:31

Re: Урок 60. Диалоги. AlertDialog: Title, Message, Icon, But

Сообщение Digetix » 16 янв 2014, 15:40

Ну тогда значит проще написать все эти диалоги обычным способом и всё

aleksbim
Сообщения: 81
Зарегистрирован: 02 фев 2013, 02:52

Re: Урок 60. Диалоги. AlertDialog: Title, Message, Icon, But

Сообщение aleksbim » 06 фев 2014, 14:28

Копирую код с урока. Подскажите пжл, что у меня не так?
Вложения
Снимок.JPG
Снимок.JPG (70.97 КБ) 13392 просмотра

Аватара пользователя
klblk
Сообщения: 1097
Зарегистрирован: 18 окт 2012, 11:17
Откуда: г. Красноярск

Re: Урок 60. Диалоги. AlertDialog: Title, Message, Icon, But

Сообщение klblk » 07 фев 2014, 11:25

aleksbim писал(а):Копирую код с урока. Подскажите пжл, что у меня не так?
красными букавками внизу все хорошо написано

MedeuovRuslan997
Сообщения: 1
Зарегистрирован: 03 июн 2014, 18:48

Re: Урок 60. Диалоги. AlertDialog: Title, Message, Icon, But

Сообщение MedeuovRuslan997 » 03 июн 2014, 18:52

ребята помогите,пишет что метод OnCreateDialog(id) и showDialog(DIALOG_EXIT) устарел.что делать?чем заменить?

Аватара пользователя
klblk
Сообщения: 1097
Зарегистрирован: 18 окт 2012, 11:17
Откуда: г. Красноярск

Re: Урок 60. Диалоги. AlertDialog: Title, Message, Icon, But

Сообщение klblk » 04 июн 2014, 05:12

MedeuovRuslan997 писал(а):ребята помогите,пишет что метод OnCreateDialog(id) и showDialog(DIALOG_EXIT) устарел.что делать?чем заменить?
http://startandroid.ru/ru/uroki/vse-uro ... ialog.html

StrauS
Сообщения: 10
Зарегистрирован: 06 апр 2014, 18:42

Re: Урок 60. Диалоги. AlertDialog: Title, Message, Icon, But

Сообщение StrauS » 28 июн 2014, 12:07

Здравствуйте, а если есть набор иконок для кнопок, как сделать так, что бы при запуске приложения они рандомно размещались на этих кнопках?
Изображение

pka
Сообщения: 6
Зарегистрирован: 26 ноя 2014, 23:45

Re: Урок 60. Диалоги. AlertDialog: Title, Message, Icon, But

Сообщение pka » 25 дек 2014, 18:23

В последних уроках у меня некоторые методы вот так отображаются (но программа все равно запускается)

(showDialog is deprecated) пишет. Что бы это значило?
Вложения
111.png
111.png (6.27 КБ) 12989 просмотров

Аватара пользователя
KamiSempai
Сообщения: 1339
Зарегистрирован: 17 фев 2012, 21:23
Откуда: Мордор

Re: Урок 60. Диалоги. AlertDialog: Title, Message, Icon, But

Сообщение KamiSempai » 25 дек 2014, 21:00

pka писал(а):В последних уроках у меня некоторые методы вот так отображаются (но программа все равно запускается)

(showDialog is deprecated) пишет. Что бы это значило?
Такой метод отображения диалогов устарел, нужно использовать DialogFragment.
R.id.team
Хватит таскать макулатуру на тренировку! Используй T Note.

GRAF_COLLIOSTRO
Сообщения: 115
Зарегистрирован: 08 янв 2015, 14:32

Re: Урок 60. Диалоги. AlertDialog: Title, Message, Icon, But

Сообщение GRAF_COLLIOSTRO » 20 янв 2015, 11:41

диалог в разных версиях API выглядит по разному. Не устравиает порядок кнопок. иногда ДА, НЕТ, ОТМЕНА. иногда ОТМЕНА, ДА, НЕТ...
как это упорядочить можно???

ISLI
Сообщения: 2
Зарегистрирован: 22 май 2015, 19:17

Re: Урок 60. Диалоги. AlertDialog: Title, Message, Icon, But

Сообщение ISLI » 22 май 2015, 19:21

Можно ли при нажатии кнопки диалога осуществлялся переход на другой activity?

Аватара пользователя
klblk
Сообщения: 1097
Зарегистрирован: 18 окт 2012, 11:17
Откуда: г. Красноярск

Re: Урок 60. Диалоги. AlertDialog: Title, Message, Icon, But

Сообщение klblk » 25 май 2015, 07:42

ISLI писал(а):Можно ли при нажатии кнопки диалога осуществлялся переход на другой activity?
да.

GRAF_COLLIOSTRO
Сообщения: 115
Зарегистрирован: 08 янв 2015, 14:32

Re: Урок 60. Диалоги. AlertDialog: Title, Message, Icon, But

Сообщение GRAF_COLLIOSTRO » 09 ноя 2015, 12:22

Честно говоря, напарился с диалогами этими. Конструктор вызова диалогов не сильно упрощает задачу. Код очень нагромождённый получается. Да ещё "гугловые развлекухи" - половина методов стали устаревшими - всё съезжает в сторону фрагментов.

В итоге создал собственное активити и вызываю его forresult. в интент пихаю идентификатор. У вызываемого активити стоит тема: @style/Theme.***.Dialog. на onCreate получаю из интента идентификатор и заполняю активность инфой в соответствии с поставленной задачей. проблем нет) код не многим больше получился. зато внутри вызываемого активити полная свобода действий. унифицировал возвращение результата для всех вызовов. дёргаю эту активность из любого места. Может кому-то проще будет пойти по этому пути...

kefir_mbis
Сообщения: 5
Зарегистрирован: 31 окт 2013, 21:35

Re: Урок 60. Диалоги. AlertDialog: Title, Message, Icon, But

Сообщение kefir_mbis » 29 ноя 2015, 19:33

Всем привет!

Друзья, вопрос по стилизации alertdialog:
требуется простейшая задачка, сменить цвет фона в заголовке диалога.

Все бы ничего, фон поменян, шрифт выровнен, все нравится, но:

- бесит синяя полоска от стандартного набора android. Подскажите (или пните в нужную сторону) как эту полоску убрать?
Screenshot_2015-11-30-01-31-09.png
Screenshot_2015-11-30-01-31-09.png (15.01 КБ) 11814 просмотров
Скину код вьюшки и код вызова диалога, если необходимо.

Код: Выделить всё

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical"
    android:background="@color/orange" >

    <TextView
        android:id="@+id/alertTitle"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:padding="14dp"
        android:gravity="center"
        android:text="Выйти из приложения?"
        android:textColor="@color/white"
        android:textSize="20sp" />    

</LinearLayout>

Код: Выделить всё

//
	  @Override
	  public void onBackPressed() {
		  AlertDialog.Builder builder = new AlertDialog.Builder(CatalogActivity.this);
		  View customTitle = View.inflate(CatalogActivity.this, R.layout.custom_alert_title, null);
		  builder.setCustomTitle(customTitle);
	         builder .setMessage("Вы действительно хотите выйти?");
	         builder  .setNegativeButton(android.R.string.no, null);
	         builder .setPositiveButton(android.R.string.yes, new DialogInterface.OnClickListener() {
	              public void onClick(DialogInterface arg0, int arg1) {
	                  CatalogActivity.super.onBackPressed();
	                   }
	          }).create().show();
	  }

Ответить