有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

removeDialog()、dismissDialog()和Dismise()之间的java差异

removeDialog()dismiss()dismissDialog()之间有什么不同?因为我可以毫无问题地一起使用它们

在实施DialogInterface.OnClickListenerAlertDialog.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) 个答案

  1. # 1 楼答案

    dismissDialog(int id):使用指定的id解除对话框。它只隐藏对话框,但仍保留包含此对话框的活动的内部引用,以便将来可以还原。API 13中已弃用

    removeDialog(int id):它还会取消具有指定id的对话框。这意味着它会隐藏该特定对话框,此外还会清除活动的所有引用,因此以后无法恢复。API 13中已弃用

    dismiss():此方法对特定对话框进行操作,因为它是dialog类的方法。它还取消了对话。你必须拥有一个有效的对话框才能关闭它,否则你会得到异常