gpt4 book ai didi

java - onEvent() 没有被调用?

转载 作者:太空宇宙 更新时间:2023-11-04 11:52:30 26 4
gpt4 key购买 nike

我正在将数据从 AsyncTask 传递到选项卡式 Activity 的 fragment 。为什么EventBus的onEvent()没有被调用?

BackgroundWorker.java doInBackground() 由 MainActivity 调用

public class BackgroundWorker extends AsyncTask<String,Void,String> {

@Override
protected void onPostExecute(String line) {
userResult = line.split(" ");
String result = userResult[0];

if(result.equals("Success")){
CustomMessageEvent event = new CustomMessageEvent();
event.setCustomMessage(line);
Intent intent = new Intent(context,TabActivity.class);
intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
context.startActivity(intent);
EventBus.getDefault().post(event);
}
}
}

ProfileTab.java 该文件是选项卡式 Activity 的 fragment 。是否有任何事情应该在选项卡式 Activity 中完成,或者是否必须再次调用 doInBackground。

public class ProfileTab extends Fragment {

public TextView t1;
private View rootView;

@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
rootView = inflater.inflate(R.layout.profile, container, false);

t1 = (TextView) rootView.findViewById(R.id.textView4);

EventBus.getDefault().register(this);
Log.d(TAG, "onCreateView: ");

return rootView;
}

@Subscribe(threadMode = ThreadMode.ASYNC)
public void onEventAsync(CustomMessageEvent event) {
Log.d(TAG, "onEvent: ");
t1.setText(event.getCustomMessage());
}

}

尝试了 LocalBroadcastManager,结果是一样的,onReceive() 没有被调用。我哪里出错了?

最佳答案

如果您在 onPostExecute 中启动 Activity,我建议按 Intent 传递数据,而不是事件 - 这样更简单。您订阅的方法不会被调用,因为事件是在您注册之前发布的 - 使用 postSticky 而不是 post,您将收到一个事件。

我假设,您想传递line(String)。因此构建 Intent :

Intent intent = new Intent(context,TabActivity.class);
intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
intent.putExtra("LINE", line);
context.startActivity(intent);

然后,在 onCreate 中的 TabActivity 中读取传递的值:

String line = getIntent().getStringExtra("LINE", "");

关于java - onEvent() 没有被调用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41673908/

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