在我的活动中,两个DialogFragments已打开。
Dialog1然后在Dialog1上方的Dialog2(两者都可以看到,一个与另一个重叠)。
我打开了其他一些活动,当我通过任务管理器回到原来的活动时,对话框的顺序发生了变化。我现在在Dialog2上看到Dialog1。
当我从TaskManager恢复活动时,如何维护DialogFragments的顺序?
答案 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()”时,问题就解决了。