Android:在Activity恢复后更改DialogFragments的顺序

时间:2012-06-09 09:52:27

标签: android android-dialogfragment

在我的活动中,两个DialogFragments已打开。

Dialog1然后在Dialog1上方的Dialog2(两者都可以看到,一个与另一个重叠)。

我打开了其他一些活动,当我通过任务管理器回到原来的活动时,对话框的顺序发生了变化。我现在在Dialog2上看到Dialog1。

当我从TaskManager恢复活动时,如何维护DialogFragments的顺序?

2 个答案:

答案 0 :(得分:1)

我在DialogFragments的排序方面遇到了类似的问题。在我的情况下,我有一个对话框来设置一个时间段,因此它必须启动另一个选择日期的对话框。因此,在显示第二个对话框并更改屏幕方向后,两个对话框的顺序相反,类似于您的问题。

所以,我的解决方案是创建一个看起来像对话框的FragmentActivity。我用第一个对话框替换了它。这样我就可以更好地管理保存实例状态以及与Activity的生命周期类似的东西。这个活动像往常一样调用第二个对话框,而不带其他东西。

我的另一个Activity,实际上调用了前一个(第一个)对话框,然后只是调用新的Activity for result,就是这样!

更详细地说,如何使活动看起来像一个对话框:

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 bug的解决方法的想法!问候。

答案 1 :(得分:0)

我遇到了类似的麻烦。 我创建了DialogFragment的第一个实体。 然后我在第一个创建了第二个。 旋转手机时出现问题。在这种情况下,第一个DialogFragment重新定位在第二个。

似乎问题是我在同一个地方(方法)创建了第一个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()”时,问题就解决了。