removeDialog()
与dismiss()
和dismissDialog()
之间有何不同?因为我可以毫无问题地一起使用它们。
实施DialogInterface.OnClickListener
或AlertDialog.OnClickListener
时是否重要?
我搜索了很多但找不到任何有用的东西。
修改 我正在为Android 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(android.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;
}
// ...
}
答案 0 :(得分:5)
dismissDialog(int id)
:取消具有指定ID的对话框。它只隐藏对话框,但仍保留包含此对话框的Activity的内部引用,以便将来可以恢复它。在API 13中保留。
removeDialog(int id)
:它还会解除具有指定ID的对话框。意味着它隐藏了特定的对话框,并且还清除了活动的所有引用,因此将来无法恢复。在API 13中弃用。
dismiss()
:此方法在特定对话框上运行,因为它是Dialog类的方法。它也驳回了对话。你必须拥有一个有效的对话框才能解雇它,否则你将获得例外。