使用接口从片段到活动进行通信

时间:2019-06-19 21:39:52

标签: android

我正在尝试在片段和活动之间设置接口,但是,我一直收到此错误。

    java.lang.NullPointerException: Attempt to invoke interface method 'void rangers.socman.FragmentChanger.doubleFrag()' on a null object reference
    at rangers.socman.BattleRhythmFrag.onClick(BattleRhythmFrag.java:144)

Idk为什么要这样做I:

     1. Created an interface and made a method to use.
     2. Implemented the interface in my main activity.
     3. Used it in my fragment

我正在遵循我为应用程序开发课程编写的一些代码,但是它不起作用。奋斗了几天,只是为了在片段中找到一个按钮来启动另一个片段。我很沮丧。

接口代码

package rangers.socman;

public interface FragmentChanger {

 void doubleFrag();
}

活动代码

@Override
public void doubleFrag() {



}

片段代码

@Override
public void onClick(View v) {

    switch(v.getId()){


        case R.id.newBattle:
        {
            //prvate FragmentChanger fragChange
           fragChange.doubleFrag();


        }

        case R.id.editBattle:
        {

        }

        case R.id.deleteBattle:
        {

        }

        break;
        default:
        {

        }
    }

1 个答案:

答案 0 :(得分:1)

您应该在片段中使用onAttach中的上下文。该上下文是一个活动实例,您应使用以下命令进行检查:

private FragmentChanger fragmentChanger;
public void onAttach(@NonNull Context context) {
  super.onAttach(context);
  if (context instanceof FragmentChanger) {
    fragmentChanger = (FragmentChanger) context;
  } 
}

... 
void onClick {
 fragmentChanger.doubleFrag();
}