Android Studio 编程让对话框一闪而过,同时完成自己想要的功能的一种方式

今天,我要分享一下,如何屏蔽别人已经写好的Dialog对话框的显示,让它自动完成我们想要它完成的事情。

使用 DialogInterface.OnDismissListener(对话框隐藏事件处理接口),在对话框显示之后,立马触发对话框隐藏事件。我们在对话框隐藏事件中编程完成自己想要的功能即可。

比如现在就有一个这样的对话框,打开后让你选择 是不是退出当前app?其源码如下:

Dialog dlg = new AlertDialog.Builder(MainActivity.this)
                .setTitle("Exit the app")
                .setMessage("Are you sure to exit the app ?")
                .setPositiveButton("Yes",
                        new DialogInterface.OnClickListener() {
                            @Override
                            public void onClick(DialogInterface dialogInterface, int i) {
                                MainActivity.this.finish();
                            }
                        })
                .setNegativeButton("No",
                        new DialogInterface.OnClickListener() {
                            @Override
                            public void onClick(DialogInterface dialogInterface, int i) {
                                Toast.makeText(MainActivity.this, "I will not close the app.", Toast.LENGTH_SHORT).show();
                            }
                        })
                .create();

        dlg.show(); // show the created dialog.

我现在不想让对话框显示出来,同时我要实现点击Yes按钮的效果。那么在将源码中,添加隐藏对话框事件就可以很好地完成这个既不破坏源代码结构,又可以很好地实现我们想要完成的功能。修改源代码如下:

Dialog dlg = new AlertDialog.Builder(MainActivity.this)
                .setTitle("Exit the app")
                .setMessage("Are you sure to exit the app ?")
                .setPositiveButton("Yes",
                        new DialogInterface.OnClickListener() {
                            @Override
                            public void onClick(DialogInterface dialogInterface, int i) {
                                MainActivity.this.finish();
                            }
                        })
                .setNegativeButton("No",
                        new DialogInterface.OnClickListener() {
                            @Override
                            public void onClick(DialogInterface dialogInterface, int i) {
                                Toast.makeText(MainActivity.this, "I will not close the app.", Toast.LENGTH_SHORT).show();
                            }
                        })
                .create();

        dlg.setOnDismissListener(new DialogInterface.OnDismissListener() {
            @Override
            public void onDismiss(DialogInterface dialogInterface) {
                On_do_other();
            }

            private void On_do_other() {
                Toast.makeText(MainActivity.this, "I don't want this dialog to be seen by user.", Toast.LENGTH_SHORT).show();
                MainActivity.this.finish();
            }
        });

        dlg.show(); // show the created dialog.
        //
        dlg.dismiss(); // I want the dialog disappear.

通过截图方式,更清楚地看到新增代码,如下图中红框所示:

Android Studio 编程让对话框一闪而过,同时完成自己想要的功能的一种方式_第1张图片

---- The End.

 

备注:另一种更好的方式,请看https://blog.csdn.net/qq_41811438/article/details/99726647

你可能感兴趣的:(AndroidStudio)