2017-01-19 6 views
0

Ich habe ein Fragment, das entweder an eine Aktivität oder ein Elternfragment angehängt werden kann. Dieses Fragment hat eine Schnittstelle, die von jedem implementiert werden muss, mit dem es verbunden ist. Für Aktivitäten, das ist ganz einfach:onAttach-Methode zum Anfügen an ein Elternfragment

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

Ich bin aber nicht in der Lage mCallback Zuhörer für andere Fragmente zu setzen, dass diese besondere Fragment hosten.

+0

prüfen 'getParentFragment()'. Wenn es einen Nicht-Null-Wert zurückgibt, befinden Sie sich in einem anderen 'Fragment' und Sie können versuchen, das auf Ihr Interface zu übertragen. –

+0

'getParentFragment()' gibt in meinem Fall null zurück. Gibt es eine geeignete Methode, ein Elternfragment hinzuzufügen? Ich blase gerade dieses Fragment in meinem Elternfragment –

+0

auf, wie du Kindfragment auffüllst/nennst? –

Antwort

0

Sie können nicht direkt zwischen zwei Fragmenten kommunizieren, es muss gründlich gehen die Aktivität Hosting (und ich sah Sie bereits die erste Hälfte umgesetzt).

Nachdem die Aktivität der Daten vom Sender Fragment erhalten haben, können Sie sie an den Empfänger Fragment senden, indem die Lösung des Referenz des Empfängers Fragment zuerst mit:

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

wenn es null ist, dann müssen Sie es zuerst instanziiert und übergeben Sie die Daten mit fragment.setArguments (Bundle), ansonsten können Sie direkt die Memberfunktion des Empfängerfragments aufrufen.

Check: https://developer.android.com/training/basics/fragments/communicating.html