试图在空对象引用上调用接口方法。在活动声明的接口中,并在片段中实现。通过单击产生制表符的错误来调用实现的方法时。
活动
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) {
}
片段
class Fragment implements Activity. HistoryListener{
@Override
public void onSelect() {
}
}
您需要将侦听器初始化为片段中的onAttach(Context context)方法
@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()");
}
}
}