Rob
Rob

Reputation: 133

Using an interface to communicate from fragment to activity

I am trying to setup an interface between my fragment and activity but, I keep getting this error.

    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 why it is doing this 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

I am following some code I did for an app development class and it does not work. Been struggling for days just to get a button in a fragment to launch another fragment. I'm very frustrated.

Interface Code

package rangers.socman;

public interface FragmentChanger {

 void doubleFrag();
}

Activity Code

@Override
public void doubleFrag() {



}

Fragment Code

@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:
        {

        }
    }

Upvotes: 0

Views: 39

Answers (1)

Dmytro Batyuk
Dmytro Batyuk

Reputation: 974

You should use context from onAttach in your fragment. That context is an activity instance and you should check it with:

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

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

Upvotes: 1

Related Questions