【问题标题】:Cannot resolve method getActivity()无法解析方法 getActivity()
【发布时间】:2015-09-11 15:38:32
【问题描述】:
  • 我是 Android 新手,并通过以下方式学习在 Android 中创建片段
    例如:Fragment Navigation Drawer

  • 在菜单项之间导航添加导航标题之间的代码包含一个方法getActivity()

  • 由于作者没有提到将这段代码粘贴到哪里,我粘贴在我的MainActivity.java文件中

  • 我是否将在菜单项之间导航添加导航标题之间的代码粘贴在正确的位置?

  • 在方法selectDrawerItem(MenuItem menuItem)中有一条注释// Create a new fragment and specify the planet to show based on position
    作者是否希望我在这里添加一些内容。

  • 我在AndroidStudio上创建的项目文件布局如下:AndroidStudio Snapshot

【问题讨论】:

  • getActivity() 通常在片段内调用。

标签: android android-fragments navigation-drawer


【解决方案1】:

你可以使用:

this Or `MainActivity.this`

代替:

getActivity()

【讨论】:

    【解决方案2】:

    Activity 没有getActivity() 方法。
    片段有。

    因为getActivity() 说:“返回包含我的活动”。

    虽然片段包含在活动中,但活动本身不包含。

    【讨论】:

    • 是的,我分析了它,然后对我的代码进行了更改,现在出现 NullPointerException 错误。我是否以正确的方式做事。我是 android 新手,这是我尝试 android 的第一个示例。
    • 你能发布一些相关的代码,而不是描述它吗?即:Main Activity onCreate() 方法?
    • @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); // 设置一个 Toolbar 来替换 ActionBar。工具栏 = (工具栏) findViewById(R.id.toolbar); setSupportActionBar(工具栏); NavigationView nvDrawer = (NavigationView) findViewById(R.id.nvView); // 设置抽屉视图 setupDrawerContent(nvDrawer); // 找到我们的抽屉视图
    • // 设置菜单图标而不是启动器图标。最终动作栏 ab = getSupportActionBar(); ab.setHomeAsUpIndicator(R.drawable.ic_menu); ab.setDisplayHomeAsUpEnabled(true);工具栏 = (工具栏) findViewById(R.id.toolbar); setSupportActionBar(工具栏); // 找到我们的抽屉视图 dlDrawer= (DrawerLayout) findViewById(R.id.drawer_layout);抽屉切换 = setupDrawerToggle(); // 将 DrawerLayout 事件绑定到 ActionBarToggle dlDrawer.setDrawerListener(drawerToggle); }
    • 抱歉评论不允许代码粘贴。您必须将其粘贴到记事本上才能阅读。
    【解决方案3】:

    已经明确指出不能在活动中使用 getActivity() 方法。好吧,除了 this 关键字之外的其他替代方案可能是;

    • 获取当前活动上下文:使用 getContext() 可以在类似文本视图的视图上调用此方法,例如 textView.getContext(); 这将给出当前托管视图的活动的上下文。即类似 View.getContext();
    • 获取应用级上下文:getApplicationContext() 此方法返回包含应用程序整个生命周期的活动。

    【讨论】:

      【解决方案4】:

      在 Fragment 中最好使用onAttach() 方法来获取附加到它的Activity 的实例。 这是一个示例代码:

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

      【讨论】:

        猜你喜欢
        • 2018-08-18
        • 2017-09-30
        • 2023-03-27
        • 1970-01-01
        • 1970-01-01
        • 2019-04-13
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多