我正在研究 ROS android 项目。我正在实现 EventBus 以不断更新 textViews 的值。我将值从 ManActivity 发布到 MainFragment
但我越来越低于错误
org.greenrobot.eventbus.EventBusException:订阅者类 com.korechi.roamioapp.MainActivity 及其超类没有带有 @Subscribe 注释的公共方法
我试过这个链接,但没有帮助。而且我没有使用 proGuard,所以我认为我不需要任何规则来修复并且不确定 proGuard 是如何工作的。
谢谢,非常感谢您的帮助。
我在MainActivity上注册事件 ,我的 MainActivity扩展了 AppCompatRosActivity
@Override
protected void onStart() {
super.onStart();
EventBus.getDefault().register(this);
}
@Override
protected void onStop() {
super.onStop();
EventBus.getDefault().unregister(this);
}
从MainActivity发布值
Subscriber<Float32> speed = connectedNode.newSubscriber("/RoamIO/speed/app_ver", Float32._TYPE);
speed.addMessageListener(new MessageListener<Float32>() {
@SuppressLint("StringFormatMatches")
@Override
public void onNewMessage(Float32 float32) {
Log.d(TAG, "onNewMessage: /RoamIO/speed/app_ver : "+String.format(getResources().getString(R.string.speedMetric)));
fragmentMessages.setSpeed(String.format(getResources().getString(R.string.speedMetric)));
EventBus.getDefault().post(fragmentMessages);
// mainFragment.speedTxtView.setText(String.format(getResources().getString(R.string.speedMetric),
// float32.getData()));
}
});
像这样从MainFragment订阅
@Subscribe(threadMode = ThreadMode.MAIN)
public void onEvent(Messages messages){
speedTxtView.setText(messages.getSpeed());
}
摇篮
implementation 'org.greenrobot:eventbus:3.2.0'