这个问题困扰了我很久,能够解决我真的高兴,我高兴的并不是解决这个问题,而是了解一段代码的逻辑在此感谢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();
}
这样就解决了