【问题标题】:Android Fragment Navigation and updating DrawerLayoutAndroid Fragment Navigation 和更新 DrawerLayout
【发布时间】:2014-03-20 04:14:28
【问题描述】:

我有一个包含 DrawerLayout 的 Activity。 我已经在单独的类中为该 DrawerLayout 定义了 Fragments。 我正在尝试在 Fragment 中添加一个按钮,该按钮应该导航到另一个 Fragment。

FragmentManager fragmentManager = getFragmentManager();
fragmentManager.beginTransaction().replace(R.id.content_frame, new MyActivity()).commit();

它可以工作,但 DrawerLayout 没有更新。需要更新标题以匹配新的 Fragment,并且当 Drawer 打开时,旧的 Fragment 仍然处于选中状态。

从一个片段导航到另一个片段的正确方法是什么?

【问题讨论】:

  • 您的MyActivity 扩展了片段?
  • 是的,MyActivity 扩展了 Fragment
  • 这样调用扩展Fragment的类很奇怪。它可能会混淆其他人。但更接近这个问题:您是否遵循本教程 developer.android.com/training/implementing-navigation/… ?看看那里的函数selectItem,它有你需要的一切。
  • 是的,这就是我的代码的基础。但是,对于 Fragment 中的按钮,无法访问 DrawerList 或 DrawerLayout(更新列表和标题)。

标签: android android-fragments


【解决方案1】:

为了访问根活动,我覆盖了 Fragment 类的 onAttach。 通过这样做,我能够将回调接口作为字段存储在 Fragment 中。

在 MyActivity.java 中(一个片段)

@Override
public void onAttach(Activity activity) {
    super.onAttach(activity);

    try {
        fragmentNavigation = (IFragmentNavigation) activity;
    } catch (ClassCastException e) {
        throw new ClassCastException(activity.toString() + " must implement IFragmentNavigation");
    }
}

【讨论】:

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