showdialog();在showDialog的过程中,程序不仅仅调用了onCreateDialog方法
第一次执行时:onCreateDialog——>onPrepareDialog
之后只调用onPrepareDialog
@Override
protected Dialog onCreateDialog(int id, Bundle b) {
// TODO Auto-generated method stub
switch (id) {
case DIALOG_RENAME_ID:
mDialog = new Dialog(this);
mDialog.setContentView(R.layout.rename_dialog);
// Log.d(LOGTAG, "mItemId is2 :" + mItemId);
break;
case DIALOG_DELETE_ID:
mDialog = new Dialog(this);
mDialog.setContentView(R.layout.delete_dialog);
break;
default:
mDialog = null;
}
// return super.onCreateDialog(id);
return mDialog;
}
第一次执行时:onCreateDialog——>onPrepareDialog
之后只调用onPrepareDialog
@Override
protected Dialog onCreateDialog(int id, Bundle b) {
// TODO Auto-generated method stub
switch (id) {
case DIALOG_RENAME_ID:
mDialog = new Dialog(this);
mDialog.setContentView(R.layout.rename_dialog);
// Log.d(LOGTAG, "mItemId is2 :" + mItemId);
break;
case DIALOG_DELETE_ID:
mDialog = new Dialog(this);
mDialog.setContentView(R.layout.delete_dialog);
break;
default:
mDialog = null;
}
// return super.onCreateDialog(id);
return mDialog;
}
问题 :我在上面这段代码中create了两个dialog,当我在用mDialog时,因为onCreateDialog只在第一次的时候被调用,所以在我用dialog的顺序是1-0-1时,
我在调用后面一个1时其实mDialog还是0时初始化的,所以就会造成初始化错误。
解决办法: 就是在showdialog()之前调用removeDialog(id); 移除之前的dialog后程序就会再次去调用onCreateDailog();