问题描述
- 在 AlertDialog 后调用新的 intent
-
我想添加 AlertDialog 来重新命名,下面的代码:Button b = (Button)findViewById(R.id.btn); b.setOnClickListener( new OnClickListener() { @Override public void onClick(View v) { AlertDialog.Builder renameDialog = new AlertDialog.Builder(AActivity.this); renameDialog.setTitle("Rename"); final EditText newName = new EditText(AActivity.this); newName.setText(FilePath[i]); renameDialog.setView(newName); renameDialog.setPositiveButton("OK", new DialogInterface.OnClickListener() { public void onClick(DialogInterface arg0, int arg1) { } }); renameDialog.setNegativeButton("Cancel", new DialogInterface.OnClickListener() { public void onClick(DialogInterface arg0, int arg1) { } }); renameDialog.show(); } } Intent it = new Intent(AActivity.this, BActivity.class); it.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP); startActivity(it); } });
但是发生错误:
Activity AActivity has leaked window com.android.internal.policy.impl.PhoneWindow$DecorView@2b0278a8 that was originally added here
这是由于新的 intent 开启,旧的 intent 暂停造成的,如何避免这个问题呢?
解决方案
在Activity的Destory得销毁Dialog 例如:
public void onDestory() {
if(dialog!= null) {
dialog.dismiss();
dialog = null;
}
}
不然就会出现你这个错误了
还有你这个跳转,不是在Dialog的onCLick做处理吗? 应该是获取Dialog中的原密码 新密码什么的判断后跳转的吧
Intent it = new Intent(AActivity.this, BActivity.class);
it.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
startActivity(it);
解决方案二:
Intent it = new Intent(AActivity.this, BActivity.class);
it.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
startActivity(it);
这段代码为何放在onClickListener中?
解决方案三:
你的代码括号都不匹配,能编译通过吗?
时间: 2024-09-16 08:41:55