Android:如何处理onBackPressed嵌套片段

时间:2014-11-13 22:04:22

标签: android android-activity android-fragments

我参加了具有以下结构的活动

 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,我希望viewsbackpressed转到view 2 }

1 个答案:

答案 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以恢复片段中的第一个视图时。