Событие передачи данных андроид автобус от активности на вкладку фрагмент
у меня есть фрагмент 5 вкладок в моей программе, я хочу передать данные от кнопки моей панели инструментов к фрагменту 5 вкладок , но проблема в том, что когда я нажимаю на кнопку моей панели инструментов, она переходит только к фрагменту 3, у кого-нибудь есть идея решить эту проблему
основная деятельность
это моя функция onclick в MainActivity
<code>public void editpage( View view) {<br /> <br /> ToggleButton etMessage = (ToggleButton) findViewById(R.id.toggleButton);<br /> Events.ActivityFragmentMessage activityFragmentMessageEvent = new Events.ActivityFragmentMessage(String.valueOf(etMessage.getText()));<br /> Events.ActivityFragmentMessage2 activityFragmentMessageEvent2 = new Events.ActivityFragmentMessage2(String.valueOf(etMessage.getText()));<br /> Events.ActivityFragmentMessage3 activityFragmentMessageEvent3 = new Events.ActivityFragmentMessage3(String.valueOf(etMessage.getText()));<br /> Events.ActivityFragmentMessage4 activityFragmentMessageEvent4 = new Events.ActivityFragmentMessage4(String.valueOf(etMessage.getText()));<br /> Events.ActivityFragmentMessage5 activityFragmentMessageEvent5 = new Events.ActivityFragmentMessage5(String.valueOf(etMessage.getText()));<br /> GlobalBus.getBus().post(activityFragmentMessageEvent);<br /> GlobalBus.getBus().post(activityFragmentMessageEvent2);<br /> GlobalBus.getBus().post(activityFragmentMessageEvent3);<br /> GlobalBus.getBus().post(activityFragmentMessageEvent4);<br /> GlobalBus.getBus().post(activityFragmentMessageEvent5);<br /> <br /> }</code>
list_fragment2
вот как я получаю данные после нажатия кнопки переключения на MainActivity
<code>@Override<br /> public void onStart() {<br /> super.onStart();<br /> GlobalBus.getBus().register(this);<br /> }<br /> @Subscribe<br /> public void getMessage(Events.ActivityFragmentMessage activityFragmentMessage) {<br /> <br /> messageView2 = (TextView) getView().findViewById(R.id.sum2);<br /> messageView2.setText(String.valueOf(activityFragmentMessage.getMessage()));<br /> messageView2.setText(activityFragmentMessage.getMessage());<br /> i = messageView2.getText().toString();<br /> result = Integer.parseInt(i);<br /> if (result == 1) {<br /> Nsum[0]++;<br /> editor.putInt(PREFS_KEY,Nsum[0]);<br /> editor.commit();<br /> FragmentTransaction ft = getFragmentManager().beginTransaction();<br /> ft.detach(list_fragment2.this).attach(list_fragment2.this).commit();<br /> <br /> }else if (result ==0){<br /> editor.remove(PREFS_KEY);<br /> editor.commit();<br /> FragmentTransaction ft = getFragmentManager().beginTransaction();<br /> ft.detach(list_fragment2.this).attach(list_fragment2.this).commit();<br /> }<br /> <br /> }<br /> @Override<br /> public void onDestroyView() {<br /> super.onDestroyView();<br /> GlobalBus.getBus().unregister(this);<br /> }</code>
orderlist_fragment
<code>@Override<br /> public void onStart() {<br /> super.onStart();<br /> GlobalBus.getBus().register(this);<br /> }<br /> @Subscribe<br /> public void getMessage3(Events.ActivityFragmentMessage3 activityFragmentMessage3) {<br /> <br /> messageView3 = (TextView) getView().findViewById(R.id.sum3);<br /> messageView3.setText(String.valueOf(activityFragmentMessage3.getMessage3()));<br /> messageView3.setText(activityFragmentMessage3.getMessage3());<br /> i = messageView3.getText().toString();<br /> result = Integer.parseInt(i);<br /> if (result == 1) {<br /> Nsum[0]++;<br /> editor.putInt(PREFS_KEY,Nsum[0]);<br /> editor.commit();<br /> FragmentTransaction ft = getFragmentManager().beginTransaction();<br /> ft.detach(orderlist_fragment.this).attach(orderlist_fragment.this).commit();<br /> <br /> }else if (result ==0){<br /> editor.remove(PREFS_KEY);<br /> editor.commit();<br /> FragmentTransaction ft = getFragmentManager().beginTransaction();<br /> ft.detach(orderlist_fragment.this).attach(orderlist_fragment.this).commit();<br /> }<br /> <br /> }<br /> @Override<br /> public void onDestroyView() {<br /> super.onDestroyView();<br /> GlobalBus.getBus().unregister(this);<br /> }</code>
Tab4_fragment
<code>@Override<br /> public void onStart() {<br /> super.onStart();<br /> GlobalBus.getBus().register(this);<br /> }<br /> @Subscribe<br /> public void getMessage(Events.ActivityFragmentMessage4 activityFragmentMessage4) {<br /> <br /> messageView4 = (TextView) getView().findViewById(R.id.sum4);<br /> messageView4.setText(String.valueOf(activityFragmentMessage4.getMessage4()));<br /> messageView4.setText(activityFragmentMessage4.getMessage4());<br /> i = messageView4.getText().toString();<br /> <br /> result = Integer.parseInt(i);<br /> if (result == 1) {<br /> Nsum[0]++;<br /> editor.putInt(PREFS_KEY,Nsum[0]);<br /> editor.commit();<br /> FragmentTransaction ft = getFragmentManager().beginTransaction();<br /> ft.detach(Tab4_fragment.this).attach(Tab4_fragment.this).commit();<br /> <br /> }else if (result ==0){<br /> editor.remove(PREFS_KEY);<br /> editor.commit();<br /> FragmentTransaction ft = getFragmentManager().beginTransaction();<br /> ft.detach(Tab4_fragment.this).attach(Tab4_fragment.this).commit();<br /> }<br /> <br /> }<br /> @Override<br /> public void onDestroyView() {<br /> super.onDestroyView();<br /> GlobalBus.getBus().unregister(this);<br /> }</code>
Что я уже пробовал:
у меня есть идея не решить эту проблему, надеюсь получить какую-то идею отсюда, большое вам спасибо
Richard MacCutchan
У вас есть только 3 вкладки.
Member 12609609
спасибо вам, на самом деле четвертая и пятая таблицы-это один и тот же код с первым, вторым, третьим фрагментом
Nick_3141592654
Задумывались ли вы о жизненном цикле ваших фрагментов? Это потому, что другие фрагменты еще не были созданы (раздуты). Проверьте документы для ViewPager, и вы обнаружите, что можете настроить его так, чтобы он раздувал и удерживал все вкладки в памяти одновременно, но это расточительно расходует ресурсы (память). Другой подход заключается в сохранении данных, которые вы передаете в общих префиксах, и каждый фрагмент может затем загружаться из общих префиксов в их onResume().