/ / Android: Wie rufe ich die in xml enthaltene Fragmentmethode auf? - Java, Android, XML, Android-Fragmente

Android: Wie man Methode des Fragments anruft, die in xml enthalten wird? - Java, Android, Xml, Android-Fragmente

Ich habe zwei Fragmente, Fragment A & B. Fragment B ist in der XML von Fragment A enthalten.

für zB: 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>

Nun möchte ich über Fragment A auf die Methode in Fragment B zugreifen.

Z.B : Fragment B:

public void releaseCamera(){
//todo: camera release here
}

Fragment A:

 public void onButtonClick(){
//todo : call releaseCamera() here
//tried but didnot work
FragmentB fragmentB =
(FragmentB)getActivity().getSupportFragmentManager().findFragmentById(R.id.fragment_b);
fragmentB.releaseScannerCamera();
}

Wie kann ich das erreichen? Soll ich die Schnittstelle verwenden? Vielen Dank,

Antworten:

0 für die Antwort № 1

FragmentB fragmentB = (FragmentB) getActivity (). GetFragmentManager (). FindFragmentById (R.id.fragment_b); fragmentB.releaseScannerCamera (this);


0 für die Antwort № 2
  1. Ein guter Ansatz ist es, FrameLayout anstelle von Fragment zu verwenden. Fügen Sie die Fragmente (A und B) aus der Aktivität hinzu, indem Sie die Methode Fragment-Manager hinzufügen verwenden.
  2. Erstellen Sie in der Aktivität Schnittstellenmethoden, die Objekte von Fragment A und B zurückgeben. So können Sie das Objekt von Fragment abrufen, wann immer Sie möchten, und diese Methoden entsprechend aufrufen.

0 für die Antwort № 3

Einfache Antwort gefunden. Musste nur getChildFragmentManager () verwenden. Es muss keine Schnittstelle für die Aktivität erstellt werden, da beide Fragmente direkt über XML verbunden sind.

FragmentB fragmentB =
(FragmentB)getChildFragmentManager().findFragmentById(R.id.fragment_b);
fragmentB.releaseScannerCamera();