关于调用finish()后dialog一闪而过的问题

这个问题困扰了我很久,能够解决我真的高兴,我高兴的并不是解决这个问题,而是了解一段代码的逻辑在此感谢REGT,对我的教导

废话少说:

 举例说明吧:

   privare void A(){

    //其它相关代码

    showDialog();

   //最后调用finish方法

   this.finish();

}

private void showWarningDialog() {
        AlertDialog.Builder builder = new Builder(this);
        builder.setIcon(android.R.drawable.ic_dialog_alert);
        builder.setTitle("标题");
        builder.setMessage(getResources().getString("提示信息");
        builder.setPositiveButton("是", new DialogInterface.OnClickListener() {
            @Override
            public void onClick(DialogInterface dialog, int which) {
                //确定的相关代码
            }
        });
        builder.setNegativeButton("否", new DialogInterface.OnClickListener() {
            @Override
            public void onClick(DialogInterface dialog, int which) {
                //取消的相关代码
            }
        });
        builder.create();
        builder.show();
    }

执行这个逻辑之后,你会发现你的dialog一闪而过,不在此页面停留

原因是:

      主线程一直执行,到了dialog方法里,然后展示了dialog,然后跑出来,继续执行主线程,最后发现了this.finish();把页面给关掉了

     dialog中的方法只是一个回调函数,或者说是一个回调方法 onclicklistener

解决方法:

    把最后的this.finish()放入到onclicklistener方法中,让它调用

最后应该是这样:

privare void A(){

    //其它相关代码

    showDialog();

}

private void showDialog() {
        AlertDialog.Builder builder = new Builder(this);
        builder.setIcon(android.R.drawable.ic_dialog_alert);
        builder.setTitle("标题");
        builder.setMessage(getResources().getString("提示信息");
        builder.setPositiveButton("是", new DialogInterface.OnClickListener() {
            @Override
            public void onClick(DialogInterface dialog, int which) {
                //确定的相关代码

                //你的activity

               Activity.this.finish();
            }
        });
        builder.setNegativeButton("否", new DialogInterface.OnClickListener() {
            @Override
            public void onClick(DialogInterface dialog, int which) {
                //取消的相关代码
            }
        });
        builder.create();
        builder.show();
    }

    这样就解决了

猜你喜欢

转载自blog.csdn.net/u011719228/article/details/43406215