1

一直在尝试实现与其他片段通信。期间有错误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);}

              }
  } 

片段 B

public class PlayerFragment extends ListFragment implements
                 SectionFragment.OnSelectedIdListener{

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

}
4

1 回答 1

1
  1. 遵循命名约定是很好的。接口名称以大写字母开头,方法名称以小写字母开头。所以它是OnSelectedListeneridSelected分别。
  2. 在使用侦听器时,您应该始终检查侦听器是否不是null.
  3. 您在代码中实现接口,Fragment而在代码中,您将其转换Activity为侦听器。
于 2013-07-25T04:30:25.993 回答