2016-06-28 4 views
0

Предположим, у меня есть ArrayList из 4 строковых значений. Я хочу отобразить 4 AlertDialogs с этими 4 строковыми значениями в качестве сообщения. Поэтому я сомневаюсь, что хочу отобразить один AlertDialog только после того, как его уволили. Поэтому они должны отображаться в обратном порядке, когда нажата кнопка «ОК»/«Отмена». Любая помощь будет оценена.Показывать несколько AlertDialog один за другим

ArrayList<String> messages = new ArrayList<String>(); 
    messages.add("One"); 
    messages.add("Two"); 
    messages.add("Three"); 
    messages.add("Four"); 
    for(int i=0; i<messages.size(); i++) 
    { 
     AlertDialog.Builder builder1 = new AlertDialog.Builder(MainActivity.this); 
     builder1.setMessage(messages.get(i)); 
     builder1.setCancelable(true); 

     builder1.setPositiveButton(
      "Yes", 
      new DialogInterface.OnClickListener() { 
       public void onClick(DialogInterface dialog, int id) { 
        dialog.cancel(); 
       } 
      }); 

     builder1.setNegativeButton(
      "No", 
      new DialogInterface.OnClickListener() { 
       public void onClick(DialogInterface dialog, int id) { 
        dialog.cancel(); 
       } 
      }); 

     AlertDialog alert11 = builder1.create(); 
     alert11.show(); 
    } 
+0

Сейчас он должен показывать все диалоги вообще? –

+0

Да. 4-й будет сверху и 3, 2, 1 будет ниже его – Jas

+0

@Jas Пожалуйста, проверьте мой отредактированный ответ .. Что будет показано в 4,3,2,1 порядке – Sanoop

ответ

0

Вы можете сделать это в рекурсии.

public class MessagesHandler { 
     private ArrayList<String> messages = new ArrayList<String>(); 

     public MessagesHandler() { 
      messages.add("One"); 
      messages.add("Two"); 
      messages.add("Three"); 
      messages.add("Four"); 

      displayMessage(0); 
     } 

     public void displayMessage(int index) { 
      if (index < 0 || index >= messages.size()) { 
       return; 
      } 

      AlertDialog.Builder builder1 = new AlertDialog.Builder(MainActivity.this); 
      builder1.setMessage(messages.get(index)); 
      builder1.setCancelable(true); 

      builder1.setPositiveButton("Yes", 
      new DialogInterface.OnClickListener() { 
       public void onClick(DialogInterface dialog, int id) { 
        dialog.cancel(); 
        displayMessage(++index); 
       } 
      }); 

      builder1.setNegativeButton("No", 
      new DialogInterface.OnClickListener() { 
       public void onClick(DialogInterface dialog, int id) { 
        dialog.cancel(); 
        displayMessage(++index); 
       } 
      }); 

      AlertDialog alert11 = builder1.create(); 
      alert11.show(); 

     } 

    } 

Я в работе сейчас, поэтому я не могу проверить это решение, но вы можете попробовать :)

1

Сначала нужно создать функцию с принимает подсчета и отдельные сообщения, как и создать глобальную переменную int count = 0

private void buildAlertDialog(int length, String message) { 
    if (count != lenght) { 
    AlertDialog.Builder builder1 = new AlertDialog.Builder(MainActivity.this); 
    builder1.setMessage(message); 
    builder1.setCancelable(true); 

    builder1.setPositiveButton(
     "Yes", 
     new DialogInterface.OnClickListener() { 
      public void onClick(DialogInterface dialog, int id) { 
       dialog.cancel(); 
       count++; 
       buildAlertDialog(messages.size(), message.get(lenght-count+1)); 
      } 
     }); 

    builder1.setNegativeButton(
     "No", 
     new DialogInterface.OnClickListener() { 
      public void onClick(DialogInterface dialog, int id) { 
       dialog.cancel(); 
       count++; 
       buildAlertDialog(messages.size(), message.get(lenght-count+1)); 
      } 
     }); 

    AlertDialog alert11 = builder1.create(); 
    alert11.show(); 
    } 

    } 

Пожалуйста, попробуйте и дайте мне знать, и вызвать функцию из которого вы хотите, чтобы показать первый dialog

0

Попробуйте это,

int count = 0; 

public void myAlert(int index) 
{ 

AlertDialog.Builder builder1 = new AlertDialog.Builder(MainActivity.this); 
    builder1.setMessage(messages.get(count)); 
    builder1.setCancelable(true); 

    builder1.setPositiveButton(
     "Yes", 
     new DialogInterface.OnClickListener() { 
      public void onClick(DialogInterface dialog, int id) { 
       dialog.cancel(); 
       if(count != messages.size()) 
       { 
        count++; 
        myAlert(count); 
       } 
      } 
     }); 

    builder1.setNegativeButton(
     "No", 
     new DialogInterface.OnClickListener() { 
      public void onClick(DialogInterface dialog, int id) { 
       dialog.cancel(); 
      } 
     }); 

    AlertDialog alert11 = builder1.create(); 
    alert11.show(); 

} 

вызов

myAlert(count); 

Это может поможет вам