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

Android:活动恢复后对话框片段的顺序发生变化,android,android-dialogfragment,Android,Android Dialogfragment,在我的活动中,打开了两个对话框片段 Dialog1,然后是Dialog1上方的Dialog2(两者都可以看到,一个重叠另一个) 我打开了一些其他活动,当我通过任务管理器返回到我的原始活动时,对话框的顺序已经改变了。我现在看到对话框1在对话框2上 当我从TaskManager恢复活动时,如何维护DialogFragments的顺序???我在DialogFragments的顺序方面也有类似的问题。在我的例子中,我有一个对话框来设置时间段,因此它还必须启动另一个对话框来选择日期。因此,在显示第二个对话

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

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

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


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

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

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

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

下面详细介绍如何使活动看起来像对话框:

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);
    // ...
}
我希望,这会对你有所帮助,或者至少给你一个解决那个丑陋的安卓bug的想法!问候。

我也有类似的问题。 我创建了DialogFragment的第一个实体。 然后我在第一个基础上创建了第二个。 当我转动手机时,问题出现了。在本例中,第一个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.Disclease()”时,这个问题就解决了。

我在蜂窝设备之前也遇到了这个问题,但当我旋转设备时,它会颠倒顺序(我不想用配置更改作弊)。我会把这归咎于我没有严格遵循DialogFragment newInstance的方式。在创建了一个新项目并严格通过setArguments(Bundle)传递了所有内容之后,它似乎工作了!现在我只需要将这些更改向后移植到我现有的项目中,但我仍然会遇到错误。