1

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() {


            }

        }
sonique
  • 4,539
  • 2
  • 30
  • 39
Swamy
  • 65
  • 7

1 Answers1

1

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()");
          }

        } 
    }
Vasudev Vyas
  • 726
  • 1
  • 10
  • 28