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

时间:2020-08-22 00:40:09

标签: java android android-fragments fragment bundle

就像我在标题中说的那样,我想将数据从活动发送到片段,但是片段需要使用创建时收到的数据,而不是像平常一样按下按钮之后。将值放入捆绑包的活动是调用该片段的活动之前的活动,因此,在调用该片段时,捆绑包已被填充。

从我的研究中,做到这一点的最佳方法是使用捆绑软件,但是当我执行String data = bundle.getString("value")时,我会得到一个空指针异常,这意味着捆绑软件为空,但是我已经检查了并且值在那里。我该如何解决?

1 个答案:

答案 0 :(得分:0)

最好使用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

How to pass data between fragments

https://androidwave.com/fragment-communication-using-eventbus/