就像我在标题中说的那样,我想将数据从活动发送到片段,但是片段需要使用创建时收到的数据,而不是像平常一样按下按钮之后。将值放入捆绑包的活动是调用该片段的活动之前的活动,因此,在调用该片段时,捆绑包已被填充。
从我的研究中,做到这一点的最佳方法是使用捆绑软件,但是当我执行String data = bundle.getString("value")
时,我会得到一个空指针异常,这意味着捆绑软件为空,但是我已经检查了并且值在那里。我该如何解决?
答案 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/