android studio-如何在不使用按钮的情况下将数据从活动传递到片段

wsxa1bj1  于 2021-07-06  发布在  Java
关注(0)|答案(1)|浏览(402)

正如我在标题中所说,我想将活动中的数据发送到片段,但是片段需要使用创建时接收到的数据,而不是像往常一样按下按钮之后。将值放入bundle的活动位于调用片段的活动之前,因此在调用片段时bundle已经被填充。
根据我的研究,最好的方法是使用捆绑包,但是当我这样做的时候 String data = bundle.getString("value") ,我得到一个空指针异常,这意味着bundle是空的,但是我已经检查过了,并且值在那里。我该怎么解决这个问题?

fivyi3re

fivyi3re1#

最好使用eventbus将数据活动传递给片段,这样既简单又简洁。
1-注册/注销到事件总线

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

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

2-定义事件类

public class Message{
    public final String message;

    public Message(String message){
        this.message = message;
    }
}

3-在应用程序中的任何位置发布此事件

EventBus.getDefault().post(new Message("hello world"));

4-订阅该事件以在片段中接收它

@Subscribe(threadMode = ThreadMode.MAIN)
public void onMessage(Message event){
    mytextview.setText(event.message);
}

更多详细信息:https://github.com/greenrobot/eventbus
如何在片段之间传递数据
https://androidwave.com/fragment-communication-using-eventbus/

相关问题