removeDialog()、dismissDialog()和dismiss()之间的区别

3
removeDialog()dismiss()dismissDialog()有何不同?因为我可以毫无问题地一起使用它们。

在实现DialogInterface.OnClickListenerAlertDialog.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;
            }
// ...
}

我只能在Dialog类中看到dismiss(),其他两个从哪里来的? - Egor
请问您能否提供 removeDialog() 和 dismissDialog() 方法的文档链接? - Egor
添加代码,并来自“android.app.Activity.dismissDialog”和“android.app.Activity.removeDialog”包。 - Yousha Aleayoub
1
哦,现在我明白了。Activity 中的 dismissDialog() 和 removeDialog() 方法早已被弃用,请不要使用它们。只需在 Dialog 实例上调用 dismiss() 方法即可。 - Egor
我正在开发Android 2.3.3。 - Yousha Aleayoub
1
让我们在聊天中继续这个讨论 - Egor
1个回答

5

dismissDialog(int id) :关闭指定id的对话框。它只是隐藏了对话框,但仍然保留了包含该对话框的Activity中的内部引用,以便在将来可以恢复它。在API 13中已弃用。

removeDialog(int id) :它也会关闭指定id的对话框。这意味着它隐藏了特定的对话框,并清除了Activity中的所有引用,因此无法在将来恢复。在API 13中已弃用。

dismiss() :此方法作用于特定对话框,因为它是Dialog类的一个方法。它也会关闭对话框。您必须拥有有效的对话框才能关闭它,否则会出现异常。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接