【问题标题】:How to have Activity call an method in the Fragment class if I am using Navigation Drawer如果我使用导航抽屉,如何让 Activity 调用 Fragment 类中的方法
【发布时间】:2020-08-03 17:12:34
【问题描述】:

我想从 Activity 调用 Fragment 类中的一个方法。使用 getFragmentManager().findFragmentById(R.id.example_fragment)

一直导致错误

Attempt to invoke virtual method 'void com.package.name.HomeFragment.functionName()' on a null object reference.

我认为这可能与我使用的是导航抽屉有关,因此我没有直接运行getSupportFragmentManager.beginTransaction.add(fragmentStuff).commit();,但我不确定如何修复此错误。

【问题讨论】:

    标签: android android-studio android-fragments android-activity android-navigation


    【解决方案1】:

    在调用它的方法之前,你必须在activity中添加fragment。

    找到fragment并调用它的方法有两种方式:

    第一:

    ExampleFragment fragment = (ExampleFragment)getFragmentManager().findFragmentById(R.id.example_fragment);
    
    if(fragment.isAdded()){
        fragment.functionName(); 
    }
    

    第二:

    ExampleFragment fragment = (ExampleFragment)getFragmentManager().findFragmentByTAG("tagofExampleFragment");
    
    if(fragment.isAdded()){
        fragment.functionName(); 
    }
    

    【讨论】:

      【解决方案2】:

      我感觉您将片段视为 java 类,fragment 应该用作接口。

      你可以尝试一下

      MyFragment 片段 = 新的 MyFragment(); 片段.myMethod();

      【讨论】:

      • 我不知道你说的第一句话是什么意思。分片不是继承了分片类的java类吗?
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-09-04
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多