1

My hierarchy is like this.A viewpager included 3 pages(all fragment),called NewFragment,InvoledFragment and MeFragment,and outside the viewpager i set a Radiobutton to switch between Newfragment and another fragment named Hotfragment,for some reason i used hide(),show()to manage the switch,here is![enter image description here is my code

Page 1

Page 2

Page 3

RadioButton check listener

private class CheckedChangeListener implements RadioGroup.OnCheckedChangeListener {
    @Override
    public void onCheckedChanged(RadioGroup group, int checkedId) {
        switch (checkedId) {
            case R.id.button_new:
                mFragmentAtPos0 = newfrag;
                fragTransaction = fragmentManager.beginTransaction();
                if(!newfrag.isAdded()){
                    fragTransaction.hide(hotfrag).add(R.id.mainviewpager,newfrag).commit();
                }
                else{
                    fragTransaction.hide(hotfrag).show(newfrag).commit();
                }
                mFragmentAtPos0 = newfrag;


                Toast.makeText(MainActivity.this, "NEW", Toast.LENGTH_SHORT).show();
                break;
            case R.id.button_hot:

                fragTransaction = fragmentManager.beginTransaction();
                if(!hotfrag.isAdded()){
                    fragTransaction.hide(newfrag).add(R.id.mainviewpager,hotfrag).commit();
                }
                else{
                    fragTransaction.hide(newfrag).show(hotfrag).commit();
                }
                mFragmentAtPos0 = hotfrag;


                Toast.makeText(MainActivity.this, "HOT", Toast.LENGTH_SHORT).show();
                break;

        }
    }
}

and the FragmentPagerAdapter

private class MyPagerAdapter extends FragmentPagerAdapter {

    private final FragmentManager mFragmentManager;

    public MyPagerAdapter(android.support.v4.app.FragmentManager fm) {
        super(fm);
        mFragmentManager = fm;
    }
    @Override
    public Fragment getItem(int position) {
        if(position == 0){
            Log.d("check","111");
            return mFragmentAtPos0;
        }
        else if(position == 1){
            return(new InvolveFragment());
        }
        else {
            return(new MeFragment());
        }

    }
    @Override
    public int getCount() {
        return 3;
    }
    @Override
    public int getItemPosition(Object object)
    {
    if (object instanceof NewFragment && mFragmentAtPos0 == hotfrag)
        return POSITION_NONE;
    return POSITION_UNCHANGED;
    }
}

My problem is the HotFrag didn't show,but it worked (I put log code in hotfrag to check),and viewpager just works fine,I stucked here for several hours but still got no way to solve it.

There is a answer i found quite similar,it's here Replace Fragment inside a ViewPager, but i worked with hide,show, not replace.

Anyone could help?Thanks a lot!

Community
  • 1
  • 1

0 Answers0