私は自分のアプリケーションの一部を(ちょうどアクティビティから)フラグメントに切り換えています。私は何かが完全に欠落しているか、AlertDialogを表示するプロセス全体を複雑にしています。Android:AlertDialogs and Fragments
まず、ここで私がやろうとしていることは次のとおりです。それぞれのボトムに関連付けられたコールバックメソッドを含む、肯定的なボタンと否定的なボタンを含むいくつかの警告ダイアログを表示します。ダイアログは、画面の回転を生き残る(つまり、再作成する)必要があります。
前に:以前は、適切なコールバックメソッドなどでAlertDialogを作成して表示するだけでした。これを表示すると、システムは画面の回転を含むすべての処理を行います。
Now:私のフラグメントからAlertDialogを作成して表示すると、画面の回転中や、破棄中にLogCatのリークメモリに従って再作成されません。フラグメントに関する新しい開発者ドキュメントによると、DialogFragmentを使用してAlertDialogを作成して、フラグメントマネージャが画面の回転などを処理できるようにする必要があります(ここでは、http://developer.android.com/reference/android/app/DialogFragment.htmlのAlert Dialog見出しを参照してください)。問題はコールバックメソッドです。提供された例では、アクティビティの2つのメソッドにハードコードされています。私は2つの問題がある、私はこのプロセスに関与することを望んでいない、私は作成する別のAlertDialogのための別のコールバックメソッドが必要です。私は本当に私が作成するAlertDialogごとにハードコーディングされたコールバックで別のクラスを作成する必要はありません。
フラグメントを入れるもう1つの方法は、フラグメントマネージャが、作成プロセス中に保存された "引数"を使用して画面を回転した後に再作成される方法です。これは単純な方法でなければなりません。 。これらの引数はバンドル内に保存されますが、バンドル内にコールバックメソッドを保存できないため、フラグメントマネージャは渡されたコールバックメソッドでフラグメントを再作成できません。 AlertDialogの各タイプのハードコーディングされたコールバックメソッドを使用して表示します...これは愚かですか、ここで何かが欠落していますか? (真の)任意の助け
おかげで、 ハリー
しかし、提案していただきありがとうございます。提案した方法を使用しているときに画面回転後にダイアログが表示されることはありません。それはなぜ論理的には理にかなっていますが、残念ながらそれはしません。 –
私のケースでは、次のコードがその仕事をすることを知っています: 'DialogFragment dialog =/*ダイアログの断片を作成する* /; FragmentTransaction ft = getFragmentManager()。beginTransaction(); dialog.show(ft、LIST_DIALOG); ' これはちょうど私が持っているいくつかのコードからリッピングされています - あなたのケースでは、AlertDialogなどを作成する必要があります。 –