2016-03-20 17 views
2

removeDialog()dismiss()dismissDialog()の違いは何ですか?何も問題なく一緒に使うことができるからです。removeDialog()、dismissDialog()、dismiss()の相違点

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

私はDialogクラス内のdismiss()しか見ることができません。他の2人はどこから来ていますか? – Egor

+0

removeDialog()およびdismissDialog()メソッドのドキュメントへのリンクを提供してもらえますか? – Egor

+0

コードを追加し、 "android.app.Activity.dismissDialog"と "android.app.Activity.removeDialog"パッケージから追加しました。 –

答えて

5

dismissDialog(int id):指定されたIDを持つダイアログを閉じます。このダイアログを隠すだけですが、このダイアログを含むアクティビティで内部参照を保持しておき、将来的にリストアできるようにします。API12で推奨されています。

removeDialog(int id):指定されたIDのダイアログも閉じます。その特定のダイアログを隠し、加えてアクティビティによるすべての参照をクリーンアップするので、将来復元することはできません。 API 13では非推奨です。

dismiss():このメソッドはDialogクラスのメソッドであるため、特定のダイアログに対して動作します。また、ダイアログを閉じます。あなたはそれを却下するために有効なダイアログを所有しなければなりません。

+0

清潔でシンプルな、ありがとう。 –