我在我的程序中有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'时,它不会膨胀所有的片段。这实际上是预期的方式。 –