gpt4 book ai didi

android - 将数据从 Activity 传递到已显示的 Fragment

转载 作者:行者123 更新时间:2023-11-29 15:35:18 24 4
gpt4 key购买 nike

如何将数据从 Activity 传递到已经 Activity 的 fragment ?我可以使用 bundle 进行传输,但我可以获得它的唯一方法是在该 fragment 上使用 createView 但我的问题是它已经创建。无论如何,我可以将数据从 Activity 传递到 fragment ,然后在不使用 onCreateView

的情况下调用该数据

我试过这个 link得到我需要的东西,但由于静态无法访问数据

最佳答案

可以有多种方式

  • @Belbahar Raouf 所示,使用 findFragmentById 获取 Fragment 实例。
  • 使用 BroadcastReceiverActivityFragmentService 之间发送数据。它无处不在。但它可能有点冗长。
  • 您可以使用 EventBus ,GreenBot的伟大发明。 只需一行即可传递数据。

    EventBus.getDefault().post(new MessageEvent());

参见 Event bus documentation实现。

创建一个将被传递给 MessageEvent.java 的模型类。

public static class MessageEvent { /* Additional fields if needed */ }

Fragment 中订阅您的监听器。

@Subscribe(threadMode = ThreadMode.MAIN)  
public void onMessageEvent(MessageEvent event) {/* Do something */};

使用 Fragment Lifecycle 注册和取消注册事件总线。

@Override
public void onStart() {
super.onStart();
EventBus.getDefault().register(this);
}

@Override
public void onStop() {
super.onStop();
EventBus.getDefault().unregister(this);
}

从您的 Activity 中,只需触发事件,这将由 Fragment 接收。

EventBus.getDefault().post(new MessageEvent());

在此之前,将依赖项添加到您的 gradle。

implementation 'org.greenrobot:eventbus:3.1.1'

EventBus 最好的东西-

It works in Activity, Fragment & Services. You need not to make multiple broadcast receiver with multiple intent types. Just post event in one line code.

我也使用 EventBus 以方便使用。

关于android - 将数据从 Activity 传递到已显示的 Fragment,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51744821/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com