我有三个Fragments
附加到ViewPager
。如果我是Fragment1,并且我在Fragment1上有一个按钮,我想按下那个片段' Fragment',访问片段3,但如果我滑动页面同时,我不想要访问Fragment3。滑动时,我想只访问Fragment2。我怎么能这样做。
TabPagerAdapter.java: -
public class TabPagerAdapter扩展了FragmentStatePagerAdapter { public TabPagerAdapter(FragmentManager fragmentManager) { 超级(fragmentManager); }
@Override
public Fragment getItem(int position)
{
switch (position)
{
case 0:
return new Fragment1();
case 1:
return new Fragment2();
case 2:
return new Fragment3();
}
return null;
}
@Override
public int getCount()
{
return 3;
}
答案 0 :(得分:0)
我已经实现了一些非常相似的东西:以前我在我的ViewPager
中有四个片段,但后来我决定通过减少滑动和缩小片段的数量来更密切地整合其中两个片段。使用按钮在两个片段之间来回切换。不过,实施工作花了我一些时间。我无法正确处理fragmentList
的索引。最后,诀窍是从ViewPager
中完全取出这两个片段,然后添加HolderFragment
。在这个片段中,我实现了片段事务,用于隐藏一个并显示另一个片段。
以下是我的HolderFragment中的代码:
public class HolderFragment extends Fragment {
private Context context;
private Fragment currentFragment;
@Override
public void onAttach(Context context) {
super.onAttach(context);
this.context = context;
}
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
super.onCreateView(inflater, container, savedInstanceState);
View view = inflater.inflate(R.layout.fragment_holder, container, false);
OneFragment oneFragment =
(OneFragment) Fragment.instantiate(context, OneFragment.class.getName());
OtherFragment otherFragment =
(OtherFragment) Fragment.instantiate(context, OtherFragment.class.getName());
// oneFragment selected on view creation
FragmentManager fm = this.getChildFragmentManager();
fm.beginTransaction().add(R.id.holder_fragment_holder, oneFragment).commit();
fm.beginTransaction().add(R.id.holder_fragment_holder, otherFragment).hide(mediaFragment)
.commit();
currentFragment = oneFragment;
return view;
}
public void switchFragments(Fragment fragment) {
if (!fragment.equals(currentFragment)) {
this.getChildFragmentManager().beginTransaction().hide(currentFragment).commit();
currentFragment = fragment;
this.getChildFragmentManager().beginTransaction().show(currentFragment).commit();
}
}
}
然后,只要按下切换按钮,只需从包含holderFragment.switchFragments(oneFragment)
的活动(以及对HolderFragment的引用)中调用holderFragment.switchFragments(otherFragment)
或ViewPager
。
答案 1 :(得分:-1)
试试这个
mViewPager.setCurrentItem(your_position, true);