How to select next tab from child fragment

[亡魂溺海] 提交于 2019-11-26 18:41:36

问题


I need to switch next tab, when a button is clicked from a child fragment.

This is how I setup tabs in parent,

TabAdapter adapter;

private void setUpTabs(ViewPager viewPager) {

    adapter = new TabAdapter(getSupportFragmentManager());
    adapter.addFragment(new FirstTabFragment(), "First Tab");
    adapter.addFragment(new SecondTabFragment(), "Second Tab");
    viewPager.setAdapter(adapter);

}

And my TabAdapter class is,

public class TabAdapter extends FragmentPagerAdapter {
    private final List<Fragment> mFragmentList = new ArrayList<>();
    private final List<String> mFragmentTitleList = new ArrayList<>();

    public TabAdapter(FragmentManager manager) {
        super(manager);
    }

    @Override
    public Fragment getItem(int position) {
        return mFragmentList.get(position);
    }

    @Override
    public int getCount() {
        return mFragmentList.size();
    }

    public void addFragment(Fragment fragment, String title) {
        mFragmentList.add(fragment);
        mFragmentTitleList.add(title);
    }

    @Override
    public CharSequence getPageTitle(int position) {
        return mFragmentTitleList.get(position);
    }
}

I created a method to switch tab inside Parent

TabLayout myTabs= (TabLayout) findViewById(R.id.my_tabs);

Button chkBtn = (Button) findViewById(R.id.check_button);

chkBtn.setOnClickListener(new View.OnClickListener() {
    @Override
    public void onClick(View view) {
        viewPager.setCurrentItem(1);
    }
});

Switching tabs inside parent class works fine. But how could I Do the same inside FirstTabFragment, Please help me.


回答1:


Just to make your UI more Interactive and good looking, I'm gonna share what I've implemented.

Just to access your viewPager from the fragment's java file, declare your viewPager as below in your parent activity.

public static ViewPager viewPager;

Then in the onClick method or onClickListener of a button in the fragment, you can just use this.

ParentActivity.viewPager.arrowScroll(View.FOCUS_RIGHT);

This will smooth scroll your viewpager to the Second Fragment, and yes, if you want to limit the user from scrolling directly you can disable the scrolling of viewPager, read here.

You can also shift the focus to left if user wants to go back to FirstFragment by just

ParentActivity.viewPager.arrowScroll(View.FOCUS_LEFT);

And yes, it's working as I first test before posting answers, silly me.




回答2:


You should call

viewPager.setCurrentItem(fragmentIdex);




回答3:


you should use setCurrentItem(int item)

Set the currently selected page. `

sample code

chkBtn.setOnClickListener(new View.OnClickListener() {
    @Override
    public void onClick(View view) {
        viewPager.setCurrentItem(2);
    }
});


来源:https://stackoverflow.com/questions/46705116/how-to-select-next-tab-from-child-fragment

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!