java - Android-与其他Fragment通信时实现接口(interface)出现空指针异常

标签 java android interface android-fragments

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

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

              }
  } 

fragment B

public class PlayerFragment extends ListFragment implements
                 SectionFragment.OnSelectedIdListener{

                @Override
                public void onIdSelected(String position) {
                    setSelectedId(position);
                }

}

最佳答案

  1. 最好遵循命名约定。接口(interface)名称以大写字母开头,方法名称以小写字母开头。所以它分别是 OnSelectedListeneridSelected
  2. 在使用监听器时,您应该始终检查监听器是否不是null
  3. 您在 Fragment 中实现接口(interface),而在您的代码中,您将 Activity 转换为监听器。

关于java - Android-与其他Fragment通信时实现接口(interface)出现空指针异常,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17848931/

相关文章:

java - 在 AWS 中找不到 Servlet

java - 单击按钮后如何将 RecyclerView 适配器中的对话框的详细信息与另一个 fragment 相匹配

android - 如何在 Android Studio 中撤消 logcat 窗口的 float 模式

android - 在 Kitkat (4.4) 中检查 gps 是否开启

c++ - 正确扩展 COM 接口(interface) (IDL)

java - JBAS017354 : Could not find the port number listening for protocol javax. ws.rs.core.Application

java - 如何在安全 xml 中配置 BCryptPasswordEncoder

java - 由于自签名或过时版本的安全异常,JDK 7u45 应用程序被阻止

java - 为什么继承类静态方法而不是接口(interface)静态方法?

android - 在 2 个以上的 fragment 之间进行通信