正如我在标题中所说,我想将活动中的数据发送到片段,但是片段需要使用创建时接收到的数据,而不是像往常一样按下按钮之后。将值放入bundle的活动位于调用片段的活动之前,因此在调用片段时bundle已经被填充。根据我的研究,最好的方法是使用捆绑包,但是当我这样做的时候 String data = bundle.getString("value") ,我得到一个空指针异常,这意味着bundle是空的,但是我已经检查过了,并且值在那里。我该怎么解决这个问题?
String data = bundle.getString("value")
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/
1条答案
按热度按时间fivyi3re1#
最好使用eventbus将数据活动传递给片段,这样既简单又简洁。
1-注册/注销到事件总线
2-定义事件类
3-在应用程序中的任何位置发布此事件
4-订阅该事件以在片段中接收它
更多详细信息:https://github.com/greenrobot/eventbus
如何在片段之间传递数据
https://androidwave.com/fragment-communication-using-eventbus/