Le best practice Android per l'interazione frammento-frammento (descritte here e here) impongono allo Activity
di implementare un listener definito dal frammento figlio. Activity
gestisce quindi la comunicazione tra i frammenti.Interazioni frammento frammento nidificato Android
Dal mio punto di vista questo è quello di mantenere i frammenti liberamente accoppiati l'uno dall'altro. Tuttavia,
È questo anche il caso di frammenti annidati? Posso immaginare che potrebbe avere senso che un frammento annidato riporti direttamente al suo frammento principale anziché all'Attività.
Se un frammento nidificato ha il suo frammento genitore implementa il suo listener, in che modo uno (o uno) dovrebbe richiedere al frammento padre di farlo. In altre parole, è simile al paradigma di seguito ma per
Fragments
:@Override public void onAttach(Activity activity) { super.onAttach(activity); try { mCallback = (OnHeadlineSelectedListener) activity; } catch (ClassCastException e) { throw new ClassCastException(activity.toString() + " must implement OnHeadlineSelectedListener"); } }
tuttavia, il modo descritto nel link di Google pubblicato nella domanda incoraggia/impone di essere un 'Activity' allegando il listener utilizzando il' onAttach() 'del frammento e lanciando un errore in caso contrario. – bcorso
Il documento incoraggia questo frammento a non comunicare direttamente con un altro frammento. Non che debba essere un'attività. – CChi
C'è un motivo particolare per cui Google suggerisce di lanciare un 'Eccezione' se il listener non è implementato dall''attività '. Dovrei semplicemente rimuovere quel codice? – bcorso