Click here to Skip to main content
15,886,110 members
Please Sign up or sign in to vote.
5.00/5 (1 vote)
See more:
i have 5 tab fragment in my programme, i want to passing data from my toolbar button to 5 tab fragment , but the problem is when i click on my toolbar button it only passing to 3 fragment , anyone have idea to solve this
Main Activity

this is my onclick function in 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

this is how i recieve data once the toggle button clicked on 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>


What I have tried:

i have to idea no solve this, hope to get some idea from here, thank you very much
Posted
Updated 9-Feb-17 16:56pm
v5
Comments
Richard MacCutchan 10-Feb-17 3:28am    
You only have 3 tabs.
Member 12609609 10-Feb-17 22:49pm    
thanks you, actually the fourth and fifth tablayout is the same code with first, second, third, fragment
Nick_3141592654 14-Apr-17 18:25pm    
Have you thought about the lifecycle for your fragments? It's because the other fragments haven't yet been created (inflated). Check the docs for ViewPager and you'll find that you can configure it to inflate and hold all tabs in memory at once - but this is wasteful of resources (memory). Another approach would be to save the data you're passing in shared prefs and each fragment can then load from shared-prefs on their onResume().

This content, along with any associated source code and files, is licensed under The Code Project Open License (CPOL)



CodeProject, 20 Bay Street, 11th Floor Toronto, Ontario, Canada M5J 2N8 +1 (416) 849-8900