Android вложенный AlertDialog - это возможно? - PullRequest
1 голос
/ 11 декабря 2010

Я пытаюсь дважды запросить у пользователя подтверждение, прежде чем сделать что-то необратимое для базы данных. Проблема в том, что внешний обработчик щелчков не ожидает внутреннего обработчика щелчков. После нажатия кнопки «Да» в первом диалоговом окне на короткое время отображается второе диалоговое окно, но внешний обработчик, тем не менее, выполняется и завершается, в конечном итоге уничтожая оба диалоговых окна.

new AlertDialog.Builder(ActivityMain.this).setMessage(
  "Are you sure?").setPositiveButton("Yes",
    new DialogInterface.OnClickListener() {
      public void onClick(DialogInterface arg0, int arg1) {

    new AlertDialog.Builder(ActivityMain.this).setMessage(
      "Are you really sure?").setPositiveButton("Yes",
    new DialogInterface.OnClickListener() {
      public void onClick(DialogInterface arg0, int arg1) {

    ....

Почему это?

Ответы [ 2 ]

2 голосов
/ 09 декабря 2012

Я считаю, что это потому, что диалоги не блокируются. Как только они отображаются, обработка переходит к следующей строке кода. Тем не менее, диалоговое окно по-прежнему отображается в ожидании взаимодействия с пользователем.

2 голосов
/ 16 января 2011

Просто создайте новый макет XML в качестве диалогового окна, создайте новое действие и установите для его темы значение @android: style / Theme.Dialog в файле манифеста под тегом активности, например:

<activity android:theme="@android:style/Theme.Dialog" android:name="LocationDialog"> </activity>

inКод прослушивателя Dialog click запускает действие как

new AlertDialog.Builder(ActivityMain.this).setMessage(
  "Are you sure?").setPositiveButton("Yes",
    new DialogInterface.OnClickListener() {
      public void onClick(DialogInterface arg0, int arg1) {
             Intent i = new Intent(YourActivity.this, NewActivity.class);
             startActivity(i);
      }

Это запустит ваше новое действие в виде диалога, в котором вы можете легко применить свое действие.

...