Member 12609609 Ответов: 0

Событие передачи данных андроид автобус от активности на вкладку фрагмент


у меня есть фрагмент 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().

0 Ответов