Android 动态改变对话框值
来源:互联网 发布:万得数据库怎么用 编辑:程序博客网 时间:2024/05/21 09:26
* 动态改变对话框值
* 关键点:onPrepareDialog方法 里面调用removeDialog(id);
* 对话框调用执行顺序 showDialog() ->onCreateDialog() -> onPrepareDialog()-> removeDialog()
* public final boolean showDialog(int id, Bundleargs) {
if (mManagedDialogs == null) {
mManagedDialogs = newSparseArray<ManagedDialog>();
}
ManagedDialog md = mManagedDialogs.get(id);
if (md == null) {
md = new ManagedDialog();
md.mDialog = createDialog(id, null, args);
if (md.mDialog == null) {
return false;
}
mManagedDialogs.put(id, md);
}
md.mArgs = args;
onPrepareDialog(id, md.mDialog, args);
md.mDialog.show();
return true;
}
分析showDialog方法可知
android创建的Dialog对象统一由ManagedDialogs进行管理,如果想重新执行createDialog()方法,需先将Dialog,移出ManagedDialogs;
public class DialogActivity extends Activity implementsOnClickListener {
privatestatic final int DIALOG_SORT_MAILS = 0x1;
publicButton mButton;
publicboolean flag;
@Override
public voidonCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.dialog_demo);
LinearLayout layout = (LinearLayout)findViewById(R.id.nextMail);
mButton = new Button(this);
mButton.setText("对话框1");
layout.addView(mButton);
mButton.setOnClickListener(this);
setTitle("动态改变对话框值");
}
@Override
public voidonClick(View v) {
showDialog(DIALOG_SORT_MAILS);
}
@Override
public voidonPrepareDialog(int id, Dialog dialog) {