我第一次尝试实现 EventBus 来通信我的 SDK 21 的 MyActivity 的两个片段(更改 button.setEnabled)
这是我的 POJO 活动
public class ButtonEvent {
public final boolean status;
public ButtonEvent(boolean status){
this.status=status;
}
}
这是触发事件的片段......
Fragment A
...//some code
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
View rootView = inflater.inflate(R.layout.fragment_a, container, false);
...//more code inside onCreateView
btnChange.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
//HERE I POST THE EVENT
EventBus.getDefault().post(new ButtonEvent(true));
}
这是接收(收听)事件的片段B...
FragmentB extends Fragment{
...//some code
@Override
// in method onCreate I register the subscriber
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
if(!EventBus.getDefault().hasSubscriberForEvent(ButtonEvent.class)) {
EventBus.getDefault().register(this);
}
}
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
View rootView = inflater.inflate(R.layout.fragment_b, container, false);
//...some other code
}
//HERE IS MI SUBSCRIBER
@Subscribe
public void onEvent(ButtonEvent event){
btnNuevoMed.setEnabled(event.status);
btnNuevoMed.setText("hELLOOO");
}
这是我的输出,但应用程序不会停止,但不会对我的 fragmentB 按钮进行任何更改:
D/EventBus: No subscribers registered for event class ar.com.titaves.consultoriosapp.servicios.ButtonEvent
D/EventBus: No subscribers registered for event class org.greenrobot.eventbus.NoSubscriberEvent
我的事件总线版本:
compile 'org.greenrobot:eventbus:3.0.0'
有类似的问题,但其中一些没有得到正确的答案,另一些是不同的情况 Activity-fragment 与 fragment to frament 的实现不同。
我的代码对吗?我错过了什么?为什么它不起作用,我该如何解决这个问题?提前致谢...