2017-10-12 78 views
-1

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

这是我的设置选项卡中的父母,

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里面做同样的事,请帮帮我。

回答

1

只是为了让你的用户界面更加互动和好看,我要分享我实现。

只要从片段的java文件访问您的viewPager,请在您的父级活动中声明您的viewPager

public static ViewPager viewPager; 

然后在片段按钮的onClick方法或onClickListener,你可以用这个。

ParentActivity.viewPager.arrowScroll(View.FOCUS_RIGHT); 

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

您也可以重点转移到左边,如果用户想通过刚才

ParentActivity.viewPager.arrowScroll(View.FOCUS_LEFT); 

回去FirstFragment是的,它的工作,因为我第一次测试发帖应答之前,我傻。

3

你应该使用setCurrentItem(int item)

设置当前选定的页面。 `

示例代码

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

谢谢!它帮助了我。我做了一个编辑问题。可以请你帮忙, – ChyperX

+0

@ user8595331当然你可以解释更多 –

2

你应该叫

viewPager.setCurrentItem(fragmentIdex);

相关问题