我有一个活动,它有多个UI面板(你可以把它们视为android中的视图),这些面板默认是不可见的。
现在,当用户触发action1
时,会显示PanelA
,当触发action2
时,PanelB
会显示(在屏幕的不同位置)。
目前可以看到PanelA
和PanelB
,现在当用户点击后退菜单时,PanelB
应该会消失,PanelA
会在后面消失菜单了。
首先,我使用View
来保存不同的面板,但是我发现很难保持状态编组,例如,PanelA
和{{1}之间的活动会有所不同}}
然后我发现了这个片段,但经过我的尝试和测试后,我发现PanelB
无法应用于我的案例,因为addTobackStack()
和PanelA
处于不同的状态位置,android默认无法保存状态。
所以我想知道我的要求是否有其他解决方案?
答案 0 :(得分:0)
您需要在onBackPressed()
的{{1}}方法中手动处理此方案。
例如 -
Activity
当打开panelB时,它将仅关闭panelB而不会执行任何其他操作。对于panelA也是如此,如果它打开,当两个面板都关闭时,它将像正常一样退出应用程序。
我强烈建议您在此处使用DialogFragments,因为您可以随时调用@Override
public void onBackPressed() {
if (panelB.isOpened()) {
panelB.close()
} else if (panelA.isOpened()) {
panelA.close()
} else {
super.onBackPressed();
}
}
和show()
,他们可以很好地处理自定义视图。
希望它有所帮助。