Android:如何调用XML中包含的片段方法



我有两个片段,片段a&B片段b包含在片段A的XML中。

for eg: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>

现在,我想从片段a。

中访问片段b中的方法

eg: 片段B:

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

片段A:

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

我该如何实现?我应该使用接口吗?谢谢,

fragmentB fragmentB = (fragmentB)getActivity()。getFragmentManager()。findfragmentById(r.id.fragment_b); fragmentB.Releasescannercamera(this);

  1. 总是好的方法是使用Framelayout代替片段。使用添加方法片段管理器添加活动中的那些(A和B)片段。
  2. 在活动中创建接口方法,该方法将返回片段A和B的对象。因此,您可以随时随地获得片段的对象,并相应地调用这些方法。

找到了简单的答案。只需要使用getChildFragmentManager()。无需创建活动上的任何接口,因为两个片段均从XML直接连接。

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