我第一次試圖實現EventBus到comunicate 兩個片段MyActivity(改變button.setEnabled) 我的SDK 21兩個片段之間的EventBus通信顯示沒有訂閱者註冊事件類別..?
的這是我的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));
}
這裏是fragmentB至極接收(聽)事件......
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
我eventbus版本:
compile 'org.greenrobot:eventbus:3.0.0'
有similiar的問題,但他們中的一些沒有得到正確的答案,其他都不同的情況下活動片段是不一樣的implem誘惑比碎片來分裂。
我的代碼是否正確?我錯過了什麼?爲什麼它不工作我怎麼能解決的問題?在此先感謝...
我覺得你忘了爲FragmentA創建用戶,請看看。 –
@SachinVarma這兩個片段必須不僅創建用戶正在監聽的fragmentB?你能告訴我如何以及在哪裏編碼嗎? – matQ
是的,你必須創建用戶的片段A也 –