2013-08-12 5 views
10

Posso facilmente comunicare tra due fragment s di un'attività richiamando interface. In questo modo, ho implementato un'interfaccia in ParentFragment per comunicare.Come comunicare tra due bambini Frammenti all'interno di un frammento annidato

Ma in caso di attività, stavo usando -

@Override 
    public void onAttach(Activity activity) { 
     super.onAttach(activity); 
     try { 
      mCallback = (OnHeadlineSelectedListener) activity; 
     } catch (ClassCastException e) { 
      throw new ClassCastException(activity.toString() 
        + " must implement OnHeadlineSelectedListener"); 
     } 
    } 

E nel caso attuale, sto usando mCallback = (OnHeadlineSelectedListener) getParentFragment(); invece di mCallback = (OnHeadlineSelectedListener) activity;. Tutto funziona bene. Questo approccio è ok? O dovrei farlo in un'altra discussione invece onAttach()?

risposta

7

La cosa cast è garantire che un determinato oggetto sia istanza di classe che implementa l'interfaccia specificata (in questo caso OnHeadlineSelectedListener). A questo punto è irrilevante quale tipo di oggetto sia l'attività, il frammento o qualsiasi altra cosa. Finché implementa l'interfaccia di cui hai bisogno, va tutto bene.

Problemi correlati