Интерфейс Null объект ReferenceCommunicating для фрагмента путем реализации интерфейса в деятельности? - PullRequest
1 голос
/ 07 ноября 2019

Попытка вызвать метод интерфейса для нулевой ссылки на объект. В Activity объявлен интерфейс и реализован фрагмент. Когда реализованный метод вызывается нажатием вкладки, возникает ошибка.

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

            }

Фрагмент

class Fragment implements Activity. HistoryListener{

      @Override
        public void onSelect() {


        }

    }

1 Ответ

0 голосов
/ 07 ноября 2019

вам нужно включить слушатель в метод 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()");
          }

        } 
    }
...