2017-01-19 8 views
0

私は、アクティビティフラグメントまたは親フラグメントに結合できるフラグメントを持っています。このフラグメントは、それが接続されている誰にでも実装されなければならないインタフェースを持っています。活動のために、これは非常に簡単です:onAttach親フラグメントに結合するメソッド

@Override 
public void onAttach(Context context) { 
    super.onAttach(context); 

    if (context instanceof Activity){ 
     Activity activity =(Activity) context; 
     try { 
      mCallback = (OnMyListener) activity; 
     } catch (ClassCastException e) { 
      throw new ClassCastException(activity.toString() + 
       " must implement OnMyListener"); 
     } 
    } 
} 

はしかし、私は、この特定の断片をホストしている他のフラグメントのためmCallbackリスナーを設定することができません。

+0

'getParentFragment()'をチェックしてください。 null以外の値を返す場合は、別の 'Fragment'に入っています。それをあなたのインターフェースにキャストしようとすることができます。 –

+0

'getParentFragment()'は私のケースではnullを返します。親フラグメントを追加する適切な方法はありますか?私は親フラグメントの –

+0

でこのフラグメントを膨らませていますか? –

答えて

0

2つのフラグメント間で直接通信することはできません。それは、それをホストするアクティビティを徹底的に遂行しなければなりません。

活動は、送信者の断片からデータを受け取った後、あなたが使用して、第1の受信機の断片の参照を解決することによって、受信機のフラグメントにそれを送ることができます。

ReceiverFragment fragment = (ReceiverFragment) getSupportFragmentManager().findFragmentById(R.id.receiver_fragment_id); 

それがnullだならば、あなたが最初にそれをインスタンス化する必要があり、 fragment.setArguments(Bundle)を使用してデータを渡します。そうしないと、受信側フラグメントのメンバー関数を直接呼び出すことができます。

チェック:https://developer.android.com/training/basics/fragments/communicating.html

関連する問題