Java Android-在与其他片段通信期间实现接口时出现空指针异常

Java Android-在与其他片段通信期间实现接口时出现空指针异常,java,android,interface,android-fragments,Java,Android,Interface,Android Fragments,我一直在努力实施。selId.onIdSelected(pid.toString())过程中出现错误,并且在此过程中获取空指针异常。我想我不确定下一步该做什么。我确信,当我点击当前位置时,有数据,但将其发送到另一个片段是另一回事 public static class SectionFragment extends ListFragment { OnSelectedIdListener selId; public interface OnSelectedIdList

我一直在努力实施。
selId.onIdSelected(pid.toString())
过程中出现错误,并且在此过程中获取空指针异常。我想我不确定下一步该做什么。我确信,当我点击当前位置时,有数据,但将其发送到另一个片段是另一回事

  public  static class SectionFragment extends ListFragment {
     OnSelectedIdListener selId;

      public interface OnSelectedIdListener {
            public void onIdSelected(String position);
        }


        public void IdSelected(String id) {
            selId.onIdSelected(id);
        }

      public void onAttach(Activity activity) {
            super.onAttach(activity);

            try {
                 selId = (OnSelectedIdListener) activity;
            } catch (ClassCastException e) {
                Log.d("error!: ",
                        String.format(e.toString(), "helow"));
            }
      }  

      ....

            @Override
            public void onItemClick(AdapterView<?> parent, View view,
                    int position, long id) {

            if(pid!=null){
                   Log.d("if not null here", "pid? "+ pid.toString());
                   selId.onIdSelected(pid.toString());
               }
            else{Log.d("Null selected id", ""+position);}

              }
  } 
  • 遵循命名约定是很好的。接口名称以大写字母开头,方法名称以小写字母开头。所以它分别是
    OnSelectedListener
    idSelected
  • 使用侦听器时,应始终检查侦听器是否为空
  • 您正在
    片段
    中实现接口,而在代码中,您正在将
    活动
    转换为侦听器
  • 遵循命名约定是很好的。接口名称以大写字母开头,方法名称以小写字母开头。所以它分别是
    OnSelectedListener
    idSelected
  • 使用侦听器时,应始终检查侦听器是否为空
  • 您正在
    片段
    中实现接口,而在代码中,您正在将
    活动
    转换为侦听器
    确保您正在初始化
    selId
    或对其进行空检查。@Abu,谢谢。我在某些方面做得对吗?不确定我做错了什么。请确保您正在初始化
    selId
    或对其进行空检查。@Abu,谢谢。我在某些方面做得对吗?不知道我做错了什么。谢谢你,先生。您的示例代码将帮助我进一步理解您的解释。谢谢你的考虑。谢谢你,先生。您的示例代码将帮助我进一步理解您的解释。谢谢你的考虑。
    public class PlayerFragment extends ListFragment implements
                     SectionFragment.OnSelectedIdListener{
    
                    @Override
                    public void onIdSelected(String position) {
                        setSelectedId(position);
                    }
    
    }