首先是google官方的文档链接
跳转链接如下:
在 Fragment 之间传递数据 | Android 开发者 | Android Developershttps://developer.android.google.cn/training/basics/fragments/pass-data-between支持同级别Fragment之间和父子级别Fragment之间的相互传值
注意,需要引入相关依赖
implementation ‘androidx.fragment:fragment:1.3.0-alpha04’
同级别Fragment直接传递数据
传输数据的fragment (假设按钮的点击事件跳转到另一个fragment)
btn.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Bundle bundle = new Bundle();
bundle.putString("key", "value");
getParentFragmentManager().setFragmentResult("resultKey", bundle);
}
});
接收数据的fragment(使用getParentFragmentManager)
getParentFragmentManager().setFragmentResultListener("requestKey", this, new FragmentResultListener() {
@Override
public void onFragmentResult(@NonNull String requestKey, @NonNull Bundle bundle) {
String result = bundle.getString("bundleKey");
}
});
父子级别的fragment之间相互传值
传输数据的fragment(和上面同级别的fragment之间传值一样)
btn.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Bundle bundle = new Bundle();
bundle.putString("key", "value");
getParentFragmentManager().setFragmentResult("resultKey", bundle);
}
});
接收数据的fragment(使用getChildFragmentManager)
getChildFragmentManager().setFragmentResultListener("requestKey", this, new FragmentResultListener() {
@Override
public void onFragmentResult(@NonNull String requestKey, @NonNull Bundle bundle) {
// 通过key获取里面对应的值value
String result = bundle.getString("bundleKey");
}
});