2012-02-18 12 views
4

私はこれについて多くの問題を見ましたが、それらのすべてを実装しようとしましたが、提案された方法のどれも私のために働いていないので、DialogFragmentがオリエンテーションの変更に消えた

問題: 私はActivityFragment内のDialogFragmentに基づいてカスタムダイアログを表示しようとしています。 レイアウトが異なるため、方向変更時にアクティビティが再作成されています。 これが起こるたびに、DialogFragmentは消えます。 dilaogを試してみて、保存するためにonRetainCustomNonConfigurationInstanceを使用して

  1. :私は疲れてい

    物事を(私は、最新のサポートパッケージを使用しています)。

  2. onCreateダイアログでsetRetainInstance(true)を使用します。
  3. ダイアログのstatic newInstance()メソッド。
  4. インナーダイアログ

や他のいくつかの文書化ソリューションに破壊するリスナーを削除するためのオーバーライド]ダイアログonDestroy。 何も動作しない、私はこれらのソリューションのバリエーション、私のカスタムダイアログがさまざまな状態で多くのUI要素を保持する理由と私は本当にこれを動作させる必要がありますと疲れているようです。

誰かが解決策にいくつかのコードを提供できたら、それは非常に感謝しています。

おかげで、 トーテム

+0

はおそらく、あなたはいくつかのコードを自分で提供することができ、その後、我々はあなたがそれをデバッグすることができます。 – lyricsboy

+0

オリエンテーションの変更に関するダイアログを閉じたいと思っています...目的を示すためにコードを提供してもらえますか? – Rich

答えて

3

問題はFragmentManagerまた、私は自分の目的のためにActivityFragmentでそれをオーバーライドするときに呼び出すことを怠った親のonSaveInstanceState()を介して保持されているということでした。

おかげで、 トーテム

+6

私は同じ問題を抱えていますが、どのように修正したのか分かりません。何を呼ぶことを怠ったのか、そしてどこで?親アクティビティのonSaveInstanceState? – span

+1

@span - 私は彼が彼の子クラスでsuper.onSaveInstanceState()を呼び出すのを忘れていたと言います。親はonSaveInstanceStateでフラグメントを再作成しますが、superを呼び出さないとできません。 – Grimmace

関連する問題