【问题标题】:How to select next tab from child fragment如何从子片段中选择下一个选项卡
【发布时间】:2018-03-24 03:01:39
【问题描述】:

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

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

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

我创建了一个在 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);
    }
});

在父类中切换标签可以正常工作。但是我怎么能在FirstTabFragment里面做同样的事情,请帮助我。

【问题讨论】:

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


    【解决方案1】:

    你应该打电话

    viewPager.setCurrentItem(fragmentIdex);

    【讨论】:

      【解决方案2】:

      你应该使用setCurrentItem(int item)

      设置当前选中的页面。 `

      示例代码

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

      【讨论】:

      • 谢谢!它帮助了我。我做了一个有问题的编辑。你能帮忙吗
      【解决方案3】:

      为了让你的 UI 更具交互性和美观,我将分享我实现的内容。

      只是为了从片段的 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);
      

      是的,它在我发布答案之前的第一次测试中起作用,我很傻。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2012-06-30
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多