0
當我從FragmentA中觸發事件(在按鈕單擊時)時,我正在校正MyActivity的兩個片段,我想在FragmentB按鈕狀態中更改爲啓用true和textview setText(「新文本」),這些都在FragmentB中,當我運行我的APP輸出顯示沒有錯誤,但不進行任何更改 這裏是我的fragmentA至極觸發事件EventBus不會更新文本視圖或按鈕,並且不顯示任何錯誤?
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));
// HERE I PUT SOUT TO SHOW IF EVENT IS FIRED
System.out.println("YOU FIRED THE EVENT");// THIS MSG IS SHOWN CORRECTLY
}
});
}
@Subscribe
public void onEvent(ButtonEvent event){
}
@Override
public void onStart() {
super.onStart();
if (!EventBus.getDefault().isRegistered(getActivity())) {
EventBus.getDefault().register(this);
}
}
@Override
public void onStop() {
super.onStop();
EventBus.getDefault().unregister(this);
}
這裏是FragmentB
FragmentB extends Fragment{
...//some code
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
View rootView = inflater.inflate(R.layout.fragment_b, container, false);
btnNuevoMed= (Button) rootView.findViewById(R.id.btnNuevoMed);
btnNuevoMed.setEnabled(false);
txtMed= (TextView)rootView.findViewById(R.id.txtMed);
//...some other code
}
//HERE IS MI SUBSCRIBER
@Subscribe
public void onEvent(ButtonEvent event){
// HERE I PUT A SOUT TO SHOW IF REACH THE METHOD
System.out.println("YOU ARE HEREEEEE"); //BUT NEVER REACH THIS METHOD . WHY?
btnNuevoMed.setEnabled(event.status);
btnNuevoMed.setText("hELLOOO");
txtMed.setText("Modification Success");
}
@Override
public void onStart() {
super.onStart();
if (!EventBus.getDefault().isRegistered(getActivity())) {
EventBus.getDefault().register(this);
}
}
@Override
public void onStop() {
super.onStop();
EventBus.getDefault().unregister(this);
}
,這是我的按鈕XML
<TextView
android:id="@+id/txtMed"
android:text="MEDICACION"
style="@style/textoTitulos"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:gravity="center_horizontal"/>
<Button
android:text="Nuevo Boton"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:id="@+id/btnNuevoMed"
/>
即時通訊使用eventbus 3.0.0。我的代碼有什麼問題?我怎麼能解決這個問題?爲什麼我無法達到傾聽者的方法?在此先感謝..
,謝謝,我試試你的代碼但它粉碎輸出顯示此錯誤:org.greenrobot.eventbus.EventBusException:訂閱服務器類ar.com.titaves.consultoriosapp.views.fragmentsPaciente.FragmentB已註冊到事件類ar.com.titaves.consultoriosapp .servicios.ButtonEvent。在我的FragmentB的Strart方法中,你能幫助我嗎?謝謝 – matQ
做一件事。在原始代碼片段B中使用!EventBus.getDefault()。isRegistered(this)而不是getActivity()。刪除粘性的東西。 – Embydextrous
I/System.out:你在這裏 I/System.out:你開始了這個活動。這是我的新輸出,所以現在它首先得到FragmentB用戶並顯示它的味精,然後是FragmentA的sout,這意味着它們以反轉順序執行,但是ir進入FragmentB用戶方法,它不會更改按鈕和txtview – matQ