Swamy
Swamy

Reputation: 65

Interface Null object Reference Communicating to fragment by implementing interface in activity?

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

Answers (1)

Vasudev Vyas
Vasudev Vyas

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

Related Questions