安卓:恢复活动后对话框片段的顺序发生变化



在我的活动中,打开了两个对话片段。

对话框

1 和对话框 1 上方的对话框 2(两者都可以看到,一个重叠另一个)。

我打开了一些其他活动,当我通过任务管理器返回到原始活动时,对话框的顺序已更改。即我现在在对话框 2 上看到对话框 1。

当我从任务管理器恢复活动时,如何保持对话片段的顺序?

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

因此,我的解决方案是创建一个看起来像对话框的FragmentActivity。然后我用第一个对话框替换了它。这样,我就可以更好地管理保存实例状态以及具有活动生命周期之类的内容。此活动像往常一样调用第二个对话框,而不携带其他内容。

我的另一个活动,实际上调用了上一个(第一个)对话框,然后只是调用新的活动以获得结果,就是这样!

在这里更详细地介绍如何使活动看起来像对话框:

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

我也有类似的麻烦。我创建了DialogFragment的第一个实体。然后我在第一个上创建了第二个。当我旋转手机时出现问题。在这种情况下,第一个对话片段重新定位在第二个对话片段上。

似乎问题是我在关闭另一个对话片段的同一位置(方法)创建了第一个对话片段。

我做了一种:

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

当我在"FirstDialogFragment.newInstance()"之前放置"otherDialogFragment.dismiss()"时,这个问题得到了解决。

最新更新