如何从子片段中选择下一个选项卡

时间:2017-10-12 08:43:25

标签: android android-fragments android-viewpager android-tablayout

当从子片段中单击按钮时,我需要切换下一个选项卡。

这就是我在父母中设置标签的方式,

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);

}

我的TabAdapter课程是,

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);
    }
}

我创建了一个在父

中切换标签的方法
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);
    }
});

切换父类中的选项卡可以正常工作。但我怎么能在FirstTabFragment内做同样的事情,请帮助我。

3 个答案:

答案 0 :(得分:2)

你应该使用setCurrentItem(int item)

  

设置当前选择的页面。 `

示例代码

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

答案 1 :(得分:2)

你应该致电

viewPager.setCurrentItem(fragmentIdex);

答案 2 :(得分:1)

为了让您的用户界面更具互动性和美观,我将分享我已实施的内容。

只是要从片段的java文件中访问您的viewPager,请在您的父活动中声明您的viewPager,如下所示。

public static ViewPager viewPager;

然后在片段中按钮的onClick方法或onClickListener中,您可以使用它。

ParentActivity.viewPager.arrowScroll(View.FOCUS_RIGHT);

这将平滑滚动您的viewpager到第二个片段,是的,如果您想限制用户直接滚动,您可以禁用viewPager的滚动,阅读here

如果用户想要通过

返回FirstFragment,您也可以将焦点移至左侧
ParentActivity.viewPager.arrowScroll(View.FOCUS_LEFT);

是的,它在我发布答案之前首先进行测试,愚蠢的我。