我参加了具有以下结构的活动
Activity
ContainerFragment with a view pager
fragment 1 within viewPager
View 1 inside fragment 1
View 2 inside fragment 1
当显示activity
加载fragment1.view1
时,如果发生某些用户互动View 1 close and View 2 Open
(将其视为2张卡片,则会隐藏另一张卡片,显示另一张卡片)。从View 1
back press
用户应返回View 1
。这变得比我想象的更令人头痛。我能提出的最好的方法是override activity.onBackPressed()
,检查当前containerFragment
是否null
并调用containerFragment.onBackPressed()
(自定义方法),然后检查是否{{1} }不是fragment1
并调用null
然后检查fragment1.onBackPressed()
是否正在显示,如果是,则关闭view 2
并显示View 2
。在view 1
中有没有更简单的方法来解决这样的问题?我无法控制重组应用程序的这一部分。
摘要:我在另一个android
内有一个fragment
,其中包含2个fragment
,我希望views
从backpressed
转到view 2
}
答案 0 :(得分:1)
我实现了一个名为FragmentViewController
的东西,它将负责在你的片段中显示正确的视图。它非常简单,例如
class FragmentViewController{
private boolean firstView = true;
public boolean isFirstView() { return firstView }
public void setFirstView() { firstView = true; }
public void setSecondView() { firstView = false; }
}
在基于FragmentViewController
的状态的片段中显示视图。每次更改状态刷新片段后都会显示正确的视图。
当显示view2时,请致电setSecondView()
。
覆盖您的活动中的onBackPressed
,并管理FragmentViewController
的状态以处理后退按钮,例如:当view2显示调用setFirstView
以恢复片段中的第一个视图时。