Android Studio的警告对话框问题

问题描述 投票:1回答:2

[尝试设置待办事项的完成清单。我试图在单击按钮时使对话框显示,但该对话框没有出现。

showdone.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                AlertDialog.Builder builder = new AlertDialog.Builder(todo.this);
                builder.setAdapter(itemdone, new DialogInterface.OnClickListener() {
                    @Override
                    public void onClick(DialogInterface dialog, int which) {
                        String strDone = itemdone.getItem(which);
                        AlertDialog.Builder builderInner = new AlertDialog.Builder(todo.this);
                        builderInner.setTitle("Done List");
                        builderInner.setMessage(strDone);
                        builderInner.setPositiveButton("Ok", new DialogInterface.OnClickListener() {
                            @Override
                            public void onClick(DialogInterface dialog, int which) {
                                dialog.dismiss();
                            }
                        });
                        builderInner.create().show();
                    }
                });
                builder.show();
            }
        });
android android-alertdialog
2个回答
0
投票

您想在对话框上而不是在构建器上调用show。也从builder重命名为showDoneBuilder,以区别内部构造器。拉出内部版本以提高可读性。

 showdone.setOnClickListener(new View.OnClickListener() {
     @Override
     public void onClick(View v) {
          AlertDialog.Builder showDoneBuilder = new AlertDialog.Builder(todo.this);
            showDoneBuilder.setAdapter(itemdone, new DialogInterface.OnClickListener() {
                @Override
                public void onClick(DialogInterface dialog, int which) {
                    String strDone = itemdone.getItem(which);
                    showDoneListDialog(strDone);
                }
            });
            showDoneBuilder.create().show(); // THE FIX
    }
 }

 private void showDoneListDialog(String message) {
       AlertDialog.Builder builderInner = new AlertDialog.Builder(todo.this);
       builderInner.setTitle("Done List");
       builderInner.setMessage(message);
       builderInner.setPositiveButton("Ok", new DialogInterface.OnClickListener() {
           @Override
           public void onClick(DialogInterface dialog, int which) {
               dialog.dismiss();
           }
       });
       builderInner.create().show();
} 

0
投票

尝试一下

添加此builder.create()。show();而不是builder.show();

showdone.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                AlertDialog.Builder builder = new AlertDialog.Builder(todo.this);
                builder.setAdapter(itemdone, new DialogInterface.OnClickListener() {
                    @Override
                    public void onClick(DialogInterface dialog, int which) {
                        String strDone = itemdone.getItem(which);
                        AlertDialog.Builder builderInner = new AlertDialog.Builder(todo.this);
                        builderInner.setTitle("Done List");
                        builderInner.setMessage(strDone);
                        builderInner.setPositiveButton("Ok", new DialogInterface.OnClickListener() {
                            @Override
                            public void onClick(DialogInterface dialog, int which) {
                                dialog.dismiss();
                            }
                        });
                        builderInner.create().show();
                    }
                });
                builder.create().show();    //Try This
            }
        });

我希望这可以帮助您!

谢谢。

© www.soinside.com 2019 - 2024. All rights reserved.