1

Communicating with Other Fragmentsを実装しようとしています。中にエラーが発生し、selId.onIdSelected(pid.toString())null ポインター例外が発生しました。次に何をすべきかについては、よくわからないと思います。現在の位置をクリックするとデータがあると確信していますが、それを他のフラグメントに送信することは別のことです。

  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 に答える