Reputation: 65
Attempt to invoke interface method on a null object reference. In Activity Declared interface and implemented in fragment. When the implemented method is invoked by clicking the Tab producing error.
Activity
private HistoryListener listener;
public interface HistoryListener{
public void onSelect();
}
TabselectedListener Of Activity
tabLayout.addOnTabSelectedListener(new TabLayout.BaseOnTabSelectedListener() {
@Override
public void onTabSelected(TabLayout.Tab tab) {
switch(tab.getPosition()) {
case 0:
break;
case 1:
break;
case 2:
Log.d("Tab", "onTabSelected: " +tab.getPosition());
listener.onSelect();
break;
}
}
@Override
public void onTabUnselected(TabLayout.Tab tab) {
}
@Override
public void onTabReselected(TabLayout.Tab tab) {
}
Fragment
class Fragment implements Activity. HistoryListener{
@Override
public void onSelect() {
}
}
Upvotes: 1
Views: 226
Reputation: 742
you need to intialize listener into onAttach(Context context) method in fragment
@Override
public void onAttach(Context context) {
super.onAttach(activity);
try{
listener = (HistoryListener) context;
} catch(Exception e){
throw new ClassCastException(context.toString()
+ " must implemenet HistoryListener.onSelect()");
}
}
}
Upvotes: 1