4

私のアクティビティでは、2 つの DialogFragments が開いています。

Dialog1 と Dialog2 が Dialog1 の上に表示されます (両方が重なり合って表示されます)。

他のアクティビティを開き、タスク マネージャーを使用して元のアクティビティに戻ると、ダイアログの順序が変更されています。つまり、Dialog2 の上に Dialog1 が表示されます。

TaskManager からアクティビティを再開するときに、DialogFragments の順序を維持するにはどうすればよいですか??

4

2 に答える 2

1

DialogFragments の順序についても同様の問題がありました。私の場合、期間を設定するためのダイアログがあったため、日付を選択するための別のダイアログも開始する必要がありました。したがって、2番目のダイアログを表示して画面の向きを変更した後、問題と同様に2つのダイアログの順序が逆になりました。

したがって、私の解決策は、ダイアログのように見える FragmentActivity を作成することでした。次に、最初のダイアログに置き換えました。そうすれば、アクティビティのライフサイクルでインスタンスの状態などを保存することをより適切に管理できます。このアクティビティは、通常どおり 2 番目のダイアログを呼び出しましたが、他に何かを運ぶことはありませんでした。

前の(最初の)ダイアログを実際に呼び出した私の他のアクティビティは、結果のために新しいアクティビティを呼び出すだけでした。

ここでは、アクティビティをダイアログのように見せる方法について詳しく説明します。

class MyDialogActivity extends FragmentActivity {

protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.my_dialog_layout);

    LayoutParams params = getWindow().getAttributes();
    params.height = LayoutParams.WRAP_CONTENT;
    params.width = LayoutParams.WRAP_CONTENT;
    getWindow().setAttributes((android.view.WindowManager.LayoutParams) params);

    setTitle("my dialogs title");
    setTheme(DialogFragment.STYLE_NORMAL);
    // ...
}

私はそれがあなたを助けるか、少なくともその醜いAndroidバグの回避策のアイデアを与えることを願っています! よろしく。

于 2012-11-28T14:31:48.877 に答える
0

私も同様の悩みを抱えていました。DialogFragment の最初のエンティティを作成しました。次に、最初のものの上に2番目のものを作成しました。電話を回転させたときに問題が発生しました。この場合、最初の DialogFragment が 2 番目の上に再配置されました。

問題は、別のDialogFragmentを閉じるのと同じ場所(メソッド)で最初のDialogFragmentを作成したことです。

私は一種のことをしました:

FirstDialogFragment a=FirstDialogFragment.newInstance(...);
a.show(getSupportFragmentManager(),"");
anotherDialogFragment.dismiss();
    .....
// then somewhere in another method
SecondDialogFragment b=SecondDialogFragment.newInstance(...);
b.show(getSupportFragmentManager(),"");

「FirstDialogFragment.newInstance()」の前に「anotherDialogFragment.dismiss()」を配置したところ、問題は解決しました。

于 2014-09-05T12:42:59.757 に答える