我在我的程序中有5個選項卡片段,我想從我的工具欄按鈕傳遞數據到5選項卡片段,但問題是當我單擊我的工具欄按鈕時它只傳遞3片段,人有想法來解決這個安卓事件總線傳遞數據從活動到選項卡片段
主要活動
這是MainActivity我的onclick功能
public void editpage(View view) {
ToggleButton etMessage = (ToggleButton) findViewById(R.id.toggleButton);
Events.ActivityFragmentMessage activityFragmentMessageEvent = new Events.ActivityFragmentMessage(String.valueOf(etMessage.getText()));
Events.ActivityFragmentMessage2 activityFragmentMessageEvent2 = new Events.ActivityFragmentMessage2(String.valueOf(etMessage.getText()));
Events.ActivityFragmentMessage3 activityFragmentMessageEvent3 = new Events.ActivityFragmentMessage3(String.valueOf(etMessage.getText()));
Events.ActivityFragmentMessage4 activityFragmentMessageEvent4 = new Events.ActivityFragmentMessage4(String.valueOf(etMessage.getText()));
Events.ActivityFragmentMessage5 activityFragmentMessageEvent5 = new Events.ActivityFragmentMessage5(String.valueOf(etMessage.getText()));
GlobalBus.getBus().post(activityFragmentMessageEvent);
GlobalBus.getBus().post(activityFragmentMessageEvent2);
GlobalBus.getBus().post(activityFragmentMessageEvent3);
GlobalBus.getBus().post(activityFragmentMessageEvent4);
GlobalBus.getBus().post(activityFragmentMessageEvent5);
}
list_fragment2
這是我收到的數據一旦切換按鈕上MainActivity
點擊@Override
public void onStart() {
super.onStart();
GlobalBus.getBus().register(this);
}
@Subscribe
public void getMessage(Events.ActivityFragmentMessage activityFragmentMessage) {
messageView2 = (TextView) getView().findViewById(R.id.sum2);
messageView2.setText(String.valueOf(activityFragmentMessage.getMessage()));
messageView2.setText(activityFragmentMessage.getMessage());
i = messageView2.getText().toString();
result = Integer.parseInt(i);
if (result == 1) {
Nsum[0]++;
editor.putInt(PREFS_KEY,Nsum[0]);
editor.commit();
FragmentTransaction ft = getFragmentManager().beginTransaction();
ft.detach(list_fragment2.this).attach(list_fragment2.this).commit();
}else if (result ==0){
editor.remove(PREFS_KEY);
editor.commit();
FragmentTransaction ft = getFragmentManager().beginTransaction();
ft.detach(list_fragment2.this).attach(list_fragment2.this).commit();
}
}
@Override
public void onDestroyView() {
super.onDestroyView();
GlobalBus.getBus().unregister(this);
}
orderlist_fragment
@Override
public void onStart() {
super.onStart();
GlobalBus.getBus().register(this);
}
@Subscribe
public void getMessage3(Events.ActivityFragmentMessage3 activityFragmentMessage3) {
messageView3 = (TextView) getView().findViewById(R.id.sum3);
messageView3.setText(String.valueOf(activityFragmentMessage3.getMessage3()));
messageView3.setText(activityFragmentMessage3.getMessage3());
i = messageView3.getText().toString();
result = Integer.parseInt(i);
if (result == 1) {
Nsum[0]++;
editor.putInt(PREFS_KEY,Nsum[0]);
editor.commit();
FragmentTransaction ft = getFragmentManager().beginTransaction();
ft.detach(orderlist_fragment.this).attach(orderlist_fragment.this).commit();
}else if (result ==0){
editor.remove(PREFS_KEY);
editor.commit();
FragmentTransaction ft = getFragmentManager().beginTransaction();
ft.detach(orderlist_fragment.this).attach(orderlist_fragment.this).commit();
}
}
@Override
public void onDestroyView() {
super.onDestroyView();
GlobalBus.getBus().unregister(this);
}
Tab4_fragment
@Override
public void onStart() {
super.onStart();
GlobalBus.getBus().register(this);
}
@Subscribe
public void getMessage(Events.ActivityFragmentMessage4 activityFragmentMessage4) {
messageView4 = (TextView) getView().findViewById(R.id.sum4);
messageView4.setText(String.valueOf(activityFragmentMessage4.getMessage4()));
messageView4.setText(activityFragmentMessage4.getMessage4());
i = messageView4.getText().toString();
result = Integer.parseInt(i);
if (result == 1) {
Nsum[0]++;
editor.putInt(PREFS_KEY,Nsum[0]);
editor.commit();
FragmentTransaction ft = getFragmentManager().beginTransaction();
ft.detach(Tab4_fragment.this).attach(Tab4_fragment.this).commit();
}else if (result ==0){
editor.remove(PREFS_KEY);
editor.commit();
FragmentTransaction ft = getFragmentManager().beginTransaction();
ft.detach(Tab4_fragment.this).attach(Tab4_fragment.this).commit();
}
}
@Override
public void onDestroyView() {
super.onDestroyView();
GlobalBus.getBus().unregister(this);
}
如果你正在使用'TabLayout',它首先會膨脹一些碎片,在這種情況下,我猜想是3。您的其他片段尚未初始化。因此,您在創建數據時必須檢查數據。 –
@NaveenDissanayake謝謝,你是否意味着問題出現在我的tablayout中? – AnthonyTang
我的意思是你認爲它的工作方式。當你使用'TabLayout'時,它不會膨脹所有的片段。這實際上是預期的方式。 –