我有两个片段,片段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);
- 总是好的方法是使用Framelayout代替片段。使用添加方法片段管理器添加活动中的那些(A和B)片段。
- 在活动中创建接口方法,该方法将返回片段A和B的对象。因此,您可以随时随地获得片段的对象,并相应地调用这些方法。
找到了简单的答案。只需要使用getChildFragmentManager()。无需创建活动上的任何接口,因为两个片段均从XML直接连接。
FragmentB fragmentB =
(FragmentB)getChildFragmentManager().findFragmentById(R.id.fragment_b);
fragmentB.releaseScannerCamera();