【问题标题】:Working with NavigationView items within a Fragment使用 Fragment 中的 NavigationView 项
【发布时间】:2017-05-23 13:11:49
【问题描述】:

我正在尝试在我的 Fragment 的 onCreateView 方法中执行下一个代码:

 if (displayedPalabra!=null){
        setCardAttributes(displayedPalabra);
        NavigationView navigationView = (NavigationView) layout.findViewById(R.id.nav_view);
        navigationView.getMenu().getItem(0).setChecked(true);
    }

但是在执行时给了我下一个错误:

java.lang.NullPointerException:尝试调用虚拟方法 'android.view.菜单 android.support.design.widget.NavigationView.getMenu()' 为空 对象引用

我的问题是:Fragment 中的布局是否无法从 MainActivity 访问 NavigationView 并因此检索空值?我是否必须以其他方式访问它?代码应该是不言自明的,我只是想将此片段的项目设置为在我的应用程序的 NavigationView 菜单中选中...通常我从 MainActivity 执行此操作以放置默认项目,但这次从另一个片段调用此片段...

【问题讨论】:

  • 您可以在您的活动中创建一个方法来切换片段并仅使用它。将其公开,并从片段内部访问它

标签: android android-fragments navigationview


【解决方案1】:

您的片段布局不包含 R.id.nav_view,因为它位于活动布局内部,而不是片段。使用 getActivity() 从您的活动中获取导航视图。

【讨论】:

  • 谢谢...我刚刚意识到我的错误是多么愚蠢,我的问题是我使用了主要活动中的代码...我使用了 getActivity() 并解决了,感谢您指出。我会尽快将您的答案标记为已接受。
  • 虽然您可以像这样访问导航视图,但这可能不是正确的方法。您的片段不应该知道导航视图。使用一些侦听器/通知机制来报告所选项目已更改的活动或逻辑控制器。
猜你喜欢
  • 2021-10-03
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多