0

私のアプリケーションでは、ダイアログフラグメントCDialogFragmentを使用しています。 アクティビティのレクレーションにDialogFragmentを非表示にする必要があります。その私のダイアログフラグメントが却下アクティビティレクリエーションでは、正常に動作しているdialogFragmentでonActivityCreatedが呼び出されないようにするにはどうすればいいですか?

@Override 
    public void onCreate(@Nullable Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setStyle(DialogFragment.STYLE_NORMAL, R.style.DialogSlideAnim2); 
    setRetainInstance(true); 
    if(savedInstanceState!=null){ 
     dismiss(); 
    } 
    } 

- として、私は()メソッドを解任使わ処理するに 。

問題は、onCreate()でdismissを呼び出した後、onActivityCreated()が呼び出されているという問題です。

はonActivityCreated()を停止するには、私はとしてのonCreateのコード()を用い - onActivityCreatedを停止することができる

if(savedInstanceState!=null){ 
    dismiss(); 
getActivity().getSupportFragmentManager().beginTransaction().remove(this).commit(); 
    } 

でもない()

Iも使用onDetached()はない溶液

解決策を教えてください

+0

「私のDialogFragmentをアクティビティレクリエーションで退会する必要があります。それはほとんど意味がありません。ユーザーが画面を回転させるか、そうでなければ構成の変更を受けた場合、ダイアログを消したいということです。それは奇妙ですが、本当に望むものなら、 'DialogFragment'の使用をやめてください。 'DialogFragment'の** completeと* point ***は、設定の変更後にダイアログを保持して再表示することです。 – CommonsWare

答えて

0

これを解決するには、それをもっと早く破壊します。再表示したくない場合は、再作成する必要はありません。

  1. ダイアログを表示/作成するときは、[アクティビティ:ダイアログ]ダイアログのグローバルパラメータにダイアログを保存します。
  2. あなたのアクティビティのonStopは、新しい作成に戻らないようにそれを却下します:dialog.dismiss();
+0

ava.lang.IllegalStateException:onStop()内のダイアログを閉じる()の場合、onSaveInstanceStateの後にこのアクションを実行できません –

+0

superを呼び出す前に、おそらくonSaveInstanceState(Bundle)で呼び出します。そのメソッドは、システムが将来インスタンスを復元する可能性があると考えられる場合には常に呼び出されます。 – Frank

関連する問題