removeDialog()、dismissDialog()和Dismise()之间的java差异
removeDialog()
和dismiss()
和dismissDialog()
之间有什么不同?因为我可以毫无问题地一起使用它们
在实施DialogInterface.OnClickListener
或AlertDialog.OnClickListener
时,这有关系吗
我找了很多,但没有找到任何有用的东西
编辑: 我在为安卓2.3开发
示例代码:
public final class OptionsPreference extends PreferenceActivity implements DialogInterface.OnClickListener
{
private AlertDialog noInternetDialog = null;
//...
@Override
protected void onPause()
{
if (this.noInternetDialog != null)
{
Log.d(LOG_TAG, "Destroying noInternetDialog...");
this.noInternetDialog.dismiss(); // X?
removeDialog(DIALOG_NOINTERNET); // X?
dismissDialog(DIALOG_NOINTERNET); // X?
this.noInternetDialog = null;
}
super.onPause();
}
@Override
protected final Dialog onCreateDialog(final int id)
{
switch (id)
{
case DIALOG_NOINTERNET:
{
final AlertDialog.Builder _builder = new AlertDialog.Builder(this).setIcon(安卓.R.drawable.ic_dialog_info).setMessage(R.string.str_nointernet);
_builder.setCancelable(false);
_builder.setPositiveButton(R.string.str_wifisettings, this);
_builder.setNeutralButton(R.string.str_ok, this);
this.noInternetDialog = _builder.create();
if (!isFinishing())
{
this.noInternetDialog.show();
}
return this.noInternetDialog;
}
// ...
}
# 1 楼答案
dismissDialog(int id)
:使用指定的id解除对话框。它只隐藏对话框,但仍保留包含此对话框的活动的内部引用,以便将来可以还原。API 13中已弃用removeDialog(int id)
:它还会取消具有指定id的对话框。这意味着它会隐藏该特定对话框,此外还会清除活动的所有引用,因此以后无法恢复。API 13中已弃用dismiss()
:此方法对特定对话框进行操作,因为它是dialog类的方法。它还取消了对话。你必须拥有一个有效的对话框才能关闭它,否则你会得到异常