gpt4 book ai didi

java - 使用 EventBus 将数据从 Activity 发送到 Fragment

转载 作者:行者123 更新时间:2023-12-02 02:22:41 25 4
gpt4 key购买 nike

我查看了所有与此相关的问题和答案。但我找不到我的问题的答案。

我有Fragment:MyFragment。其中按钮textView。我希望当我单击该按钮时,它将打开带有两个按钮的 MyActivity:cancelButtonsaveButton。当我单击 cancelButtonsaveButton 完成此 Activity 时,MyFragment 中的 textView 将更改为我在 MyActivity 中发送的内容,例如“取消点击”或“保存点击”。

我做了什么:

MyFragment中:

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

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

@Subscribe
public void onSaveEvent(Message message) {
textView.setText(message.getMessage());
};

@Subscribe
public void onCancelEvent(Message message) {
textView.setText(message.getMessage());
};

我的 Activity 中:

@OnClick(R.id.saveBtn)
public void saveClick(){
finish();
EventBus.getDefault().postSticky(new Message("Save clicked!"));
}

@OnClick(R.id.cancelBtn)
public void cancelClick(){
finish();
EventBus.getDefault().postSticky(new Message("Cancel Clicked"));
}

但它不起作用,我认为这是因为当我启动 MyActivity 时,Event BusonPause() 中取消注册,因此无法接收 Activity

我尝试过接口(interface)并且它有效。但我想用EventBus

来实现

我可以在Event Bus上做什么?

最佳答案

您可以使用StickyEvents来解决这个问题.

fragment

@Subscribe(sticky = true, threadMode = ThreadMode.MAIN)
public void onEvent(Message message) {
Message stickyEvent = EventBus.getDefault().getStickyEvent(Message.class);
if(stickyEvent != null) {
tv.setText(message.getMessage());
EventBus.getDefault().removeStickyEvent(stickyEvent);
}
};

关于java - 使用 EventBus 将数据从 Activity 发送到 Fragment,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48282450/

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