在我的活动中,打开了两个 DialogFragment。
Dialog1 然后 Dialog2 在 Dialog1 上方(都可以看到,一个重叠另一个)。
我打开了一些其他活动,当我通过任务管理器返回到我原来的活动时,对话框的顺序发生了变化..即我现在看到 Dialog1 超过了 Dialog2。
当我从 TaskManager 恢复活动时,如何保持 DialogFragments 的顺序?
在我的活动中,打开了两个 DialogFragment。
Dialog1 然后 Dialog2 在 Dialog1 上方(都可以看到,一个重叠另一个)。
我打开了一些其他活动,当我通过任务管理器返回到我原来的活动时,对话框的顺序发生了变化..即我现在看到 Dialog1 超过了 Dialog2。
当我从 TaskManager 恢复活动时,如何保持 DialogFragments 的顺序?
我对 DialogFragments 的排序也有类似的问题。就我而言,我有一个对话框来设置时间段,因此它还必须启动另一个对话框来选择日期。因此,在显示第二个对话框并更改屏幕方向后,两个对话框的顺序颠倒了,类似于您的问题。
所以,我的解决方案是创建一个看起来像对话框的 FragmentActivity。然后我用第一个对话框替换了它。这样我就可以更好地管理保存实例状态和 Activity 生命周期之类的东西。这个活动像往常一样调用了第二个对话框,没有携带其他东西。
我的另一个活动,实际上调用了前一个(第一个)对话框,然后只是调用新的活动以获得结果,就是这样!
这里更详细地介绍了如何使活动看起来像一个对话框:
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 的第一个实体。然后我在第一个之上创建了第二个。当我旋转手机时,问题出现了。在这种情况下,第一个 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()”时,问题就解决了。