是一种在Android开发中实现片段间通信的方法。它允许一个片段向另一个片段发送数据,并且不需要直接依赖于它们的宿主活动。
setFragmentResult方法是在发送片段中调用的,它接受两个参数:一个字符串的键和一个Bundle对象。键用于标识数据,而Bundle对象则用于存储要发送的数据。
接收片段需要在其onCreate方法中注册一个回调来接收数据。这可以通过调用getParentFragmentManager().setFragmentResultListener方法来完成。该方法需要三个参数:一个字符串的键、一个LifecycleOwner对象和一个FragmentResultListener对象。键用于匹配发送片段中的键,LifecycleOwner对象通常是接收片段的宿主活动,而FragmentResultListener对象则定义了在接收到结果时要执行的操作。
以下是一个示例代码,演示了如何使用setFragmentResult和setFragmentResultListener进行片段间通信:
发送片段:
Bundle data = new Bundle();
data.putString("key", "value");
getParentFragmentManager().setFragmentResult("requestKey", data);
接收片段:
getParentFragmentManager().setFragmentResultListener("requestKey", this, new FragmentResultListener() {
@Override
public void onFragmentResult(@NonNull String requestKey, @NonNull Bundle result) {
String value = result.getString("key");
// 处理接收到的数据
}
});
通过setFragmentResult方法发送数据后,接收片段的onFragmentResult方法将被调用,并传递接收到的数据。在这个例子中,我们将"key"作为数据的键,并将"value"作为数据的值。
这种方法可以用于在片段之间传递任何类型的数据,包括对象、整数、布尔值等。它在需要在不同片段之间共享数据或进行通信的情况下非常有用。
腾讯云相关产品和产品介绍链接地址:
领取专属 10元无门槛券
手把手带您无忧上云