【问题标题】:Showing multiple AlertDialog one after another一个接一个地显示多个AlertDialog
【发布时间】:2016-06-28 06:18:13
【问题描述】:

假设我有一个包含 4 个字符串值的 ArrayList。我想用这 4 个字符串值显示 4 个AlertDialogs 作为消息。所以我的疑问是,我只想在一个被解雇后显示一个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();
    }

【问题讨论】:

  • 现在它必须显示所有对话框?
  • 是的。第 4 个将在顶部,3、2、1 将在其下方
  • @Jas 请检查我编辑后的答案。它将以 4、3、2、1 顺序显示

标签: android android-alertdialog multiple-alert-dialogs


【解决方案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的位置调用函数

【讨论】:

    【解决方案2】:

    你可以在递归中做到这一点。

        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();
    
            }
    
        }
    

    我现在正在工作,所以我无法测试这个解决方案,但你可以试试 :)

    【讨论】:

      【解决方案3】:

      试试这个,

       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);
      

      这可能对你有帮助

      【讨论】:

        猜你喜欢
        • 2018-07-01
        • 1970-01-01
        • 2018-01-13
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多