如何 select 子片段中的下一个选项卡
How to select next tab from child fragment
当从子片段中单击按钮时,我需要切换下一个选项卡。
这就是我在父级中设置标签的方式,
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
class 是,
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);
}
});
在父 class 中切换标签页工作正常。但是我怎么能在里面做同样的事情FirstTabFragment
,请帮助我。
你应该使用 setCurrentItem(int item)
Set the currently selected page. `
示例代码
chkBtn.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
viewPager.setCurrentItem(2);
}
});
你应该打电话给
viewPager.setCurrentItem(fragmentIdex);
为了让您的 UI 更具互动性和美观性,我将分享我实现的内容。
只是为了从片段的 java 文件中访问您的 viewPager
,请在您的父 activity.
中如下声明您的 viewPager
public static ViewPager viewPager;
然后在片段中某个按钮的onClick
方法或onClickListener
中,就用这个即可。
ParentActivity.viewPager.arrowScroll(View.FOCUS_RIGHT);
这将使您的 viewpager
平滑滚动到第二个片段,是的,如果您想限制用户直接滚动,您可以禁用 viewPager 的滚动,阅读 here。
如果用户想返回 FirstFragment
,您也可以将焦点向左移动
ParentActivity.viewPager.arrowScroll(View.FOCUS_LEFT);
是的,我在发布答案之前首先测试它,我真傻。
当从子片段中单击按钮时,我需要切换下一个选项卡。
这就是我在父级中设置标签的方式,
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
class 是,
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);
}
});
在父 class 中切换标签页工作正常。但是我怎么能在里面做同样的事情FirstTabFragment
,请帮助我。
你应该使用 setCurrentItem(int item)
Set the currently selected page. `
示例代码
chkBtn.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
viewPager.setCurrentItem(2);
}
});
你应该打电话给
viewPager.setCurrentItem(fragmentIdex);
为了让您的 UI 更具互动性和美观性,我将分享我实现的内容。
只是为了从片段的 java 文件中访问您的 viewPager
,请在您的父 activity.
viewPager
public static ViewPager viewPager;
然后在片段中某个按钮的onClick
方法或onClickListener
中,就用这个即可。
ParentActivity.viewPager.arrowScroll(View.FOCUS_RIGHT);
这将使您的 viewpager
平滑滚动到第二个片段,是的,如果您想限制用户直接滚动,您可以禁用 viewPager 的滚动,阅读 here。
如果用户想返回 FirstFragment
,您也可以将焦点向左移动
ParentActivity.viewPager.arrowScroll(View.FOCUS_LEFT);
是的,我在发布答案之前首先测试它,我真傻。