Interface Null object Reference通过在活动中实现接口与片段进行通信?

问题描述 投票:1回答:1

试图在空对象引用上调用接口方法。在活动声明的接口中,并在片段中实现。通过单击产生制表符的错误来调用实现的方法时。

活动

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


            }

        }
android android-activity android-fragmentactivity android-tablayout
1个回答
0
投票

您需要将侦听器初始化为片段中的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()");
          }

        } 
    }
© www.soinside.com 2019 - 2024. All rights reserved.