Ho due frammenti, frammento A e B. Il frammento B è incluso nel frammento A "s xml.
per esempio: fragment_a.xml
<LinearLayout
xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="@android:color/black"
android:clickable="true"
>
<fragment android:name="com.test.FragmentB"
android:id="@+id/fragment_b"
android:layout_weight="1"
android:layout_width="match_parent"
android:layout_height="match_parent" />
</LinearLayout>
Ora voglio accedere al metodo nel frammento B dal frammento A.
Per esempio : Frammento B:
public void releaseCamera(){
//todo: camera release here
}
Frammento A:
public void onButtonClick(){
//todo : call releaseCamera() here
//tried but didnot work
FragmentB fragmentB =
(FragmentB)getActivity().getSupportFragmentManager().findFragmentById(R.id.fragment_b);
fragmentB.releaseScannerCamera();
}
Come posso raggiungerlo? Dovrei usare l'interfaccia? Grazie,
risposte:
0 per risposta № 1FragmentB fragmentB = . (FragmentB) getActivity () getFragmentManager () findFragmentById (R.id.fragment_b).; fragmentB.releaseScannerCamera (questo);
0 per risposta № 2
- Un approccio sempre valido è utilizzare FrameLayout invece Frammento. Aggiungi quei frammenti (A e B) dall'attività usando il gestore frammenti metodo add.
- Creare metodi di interfaccia in attività che restituiranno oggetti del frammento A e B. In modo da poter ottenere l'oggetto del frammento ogni volta che lo si desidera e chiamare tali metodi di conseguenza.
0 per risposta № 3
Trovato una risposta semplice. Ho dovuto usare getChildFragmentManager (). Non è necessario creare alcuna interfaccia sull'attività poiché entrambi i frammenti sono collegati direttamente da XML.
FragmentB fragmentB =
(FragmentB)getChildFragmentManager().findFragmentById(R.id.fragment_b);
fragmentB.releaseScannerCamera();