【问题标题】:How to Disable drawer in fragment and back back to correct fragment如何禁用片段中的抽屉并返回正确的片段
【发布时间】:2015-04-22 12:07:29
【问题描述】:

我有一个带有 Fragment 布局的主 Activity。抽屉有 3 个选项:

Fragment[1], Fragment[2], Fragment[3].

Fragment[2] 和 Fragment[3] 内部是一个按钮。此按钮打开其他片段。片段[4]。

我想要 Fragment[4] 没有抽屉但有一个后退按钮。

这是 Fragment[2] 中的 onClick 代码

Fragment fragment = new InstalacionesEncontradasFragment();
Bundle bundle = new Bundle();
bundle.putSerializable("key", this.instalacionesConCategorias);
fragment.setArguments(bundle);
FragmentManager fragmentManager = getFragmentManager();

FragmentTransaction mFragmentTransaction = fragmentManager.beginTransaction();
mFragmentTransaction.addToBackStack(null);
mFragmentTransaction.replace(R.id.main_frame_container, fragment, "ACTIVIDADES").commit();

而在 Fragment[4]

onCreate 方法:

getActivity().getActionBar().setDisplayHomeAsUpEnabled(true);

但是这个解决方案不起作用。

如何禁用抽屉?我应该在哪里实现后退按钮?在 Fragment[2] 或 Fragment[3] 中?

【问题讨论】:

    标签: android fragment drawer


    【解决方案1】:
    1. 你可以使用:

      mDrawerLayout.setDrawerLockMode(DrawerLayout.LOCK_MODE_LOCKED_CLOSED);
      

      这将锁定swipe上的抽屉打开

    2. 添加行

      getActivity().getActionBar().setDisplayHomeAsUpEnabled(true);
      

    在 Activity 中生成所有片段,如片段 1、2、3 和 4。可能在您的情况下,片段 4 与片段 2 来自不同的活动。因此,按下后退按钮不起作用

    【讨论】:

    • 我在哪里写mDrawerLayout.setDrawerLockMode(DrawerLayout.LOCK_MODE_LOCKED_CLOSED); Fragment[4] 没有声明 mDrawerLayout
    • 要么将变量传递给fragment4,要么通过static使用它
    • 谢谢。主要活动中的public static DrawerLayout mDrawerLayout; 是一个很好的解决方案。然后我在 Fragment[4] 中将它实例化为public DrawerLayout mDrawerLayout = Main.mDrawerLayout;。没事吧?
    • 是的,没关系..它会满足你的目的..在 Fragment[4] 中使用它就像 -- Main.mDrawerLayout.setDrawerLockMode(DrawerLayout.LOCK_MODE_LOCKED_CLOSED); 这样
    • 谢谢你,我很高兴
    猜你喜欢
    • 2016-07-14
    • 2015-10-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多