【问题标题】:Fragments and onBackPressed function片段和 onBackPressed 函数
【发布时间】:2016-09-05 02:40:43
【问题描述】:

我正在使用导航抽屉和片段来膨胀主要活动。 但是,当我按下后退按钮时,它会关闭应用程序,这在片段设置中很明显。

我想要的是,当用户单击后退按钮时,如果当前不是视图,他们会转到主页片段,但如果他们在主页上,我希望应用程序关闭。

如何解决这个问题?

【问题讨论】:

    标签: android android-fragments


    【解决方案1】:

    覆盖后退按钮将是一个非常糟糕的主意,因为它的弊大于利。

    如果你想添加一个不会被替换的Fragment(你最初的“HomePageFragment”),只需添加这一行:

      transaction.addToBackStack(null);
    

    这会给你类似的东西:

     final FragmentTransaction transaction = getSupportFragmentManager().beginTransaction();
        transaction.replace(R.id.fragment, fragment, TAG_FRAGMENT);
        transaction.addToBackStack(null);
        transaction.commit();
    

    如果你添加了一些其他的 Fragment,请不要将它们添加到后台堆栈中。

    【讨论】:

    • {transaction.addToBackStack(null);} 这行代码做到了。谢啦!但是当我从Fragment_2转到HomeFragment时,HomeFragment的标题说Title1变成了Title2,就是Fragment_2的标题,怎么解决?
    • 将标题放在 onActivityCreated() // onResume() 中,具体取决于您想要的片段:getActivity().getActionBar().setTitle("blah")
    • transaction.addToBackStack("yourTag" or null); 标签用于稍后快速找到您的帧。 PopBackStackImmediate fragmentManager.popBackStackImmediate("yourTag", 0); 更多详情here
    【解决方案2】:

    您应该重写活动类中的onBackPressed 方法,并使用它来确定是否需要切换回您的主片段或调用super.onBackPressed()

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2017-09-11
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多