我正在尝试创建一个4标签应用程序,其中每个标签都是一个片段。
一个选项卡是搜索片段,第二个选项卡是结果。
我所做的是,一旦单击搜索片段“发送”按钮,搜索参数将被发送到我的结果片段,该片段将替换viewpager中的搜索片段并显示在屏幕上,直到查看结果片段时我回击。
在我的ViewPager适配器中,我保存一个包含所有 5 片段对象的数组,但我的getCount()
返回 4 。所以我总是将结果片段作为java对象。
我可以通过调用viewPager的getItem(4)
来访问该对象,因为getCount()
返回4,所以它不会被框架调用。我觉得有点hacky但我明白,对于片段间通信,我必须经历viewPager的适配器。
我可以忍受。
我有两个问题提醒: 1.如何进行切换?我可以有一些函数告诉viewPager保存应该在该位置看到哪个片段,但我该如何实际进行切换? 2.我假设让后退按钮返回到搜索片段是完全相同的过程。但是为了让后退按钮只对我的结果片段做出反应,我可以在结果片段中实现onBackPressed()吗?
我的viewPager可能是唯一与show相关的东西,它也是一个非常标准的东西:
class PagerAdapter extends FragmentPagerAdapter {
List<Fragment> _fragments;
public PagerAdapter(FragmentManager fm) {
super(fm);
_fragments = new ArrayList<Fragment>();
_fragments.add(new FragmentA());
_fragments.add(new FragmentB());
_fragments.add(new FragmentC());
_fragments.add(new SearchFragment());
_fragments.add(new ResultsFragment());
}
@Override
public Fragment getItem(int n) {
if (n < _fragments.size())
return _fragments.get(n);
return null;
}
@Override
public int getCount() {
return 4;
}
}