android - 从一个片段导航到另一个片段
问题描述
我过去两天在网上冲浪寻找下一个问题的解决方案:我在 ViewPager 的选项卡中有一个适配器类我尝试使用片段管理器在点击事件中调用片段。当片段被调用时一切正常,但是当我尝试返回最后一个位置的上一个选项卡时,没有显示,而不是显示主要活动。
在适配器中:
FragmentManager fm = ((MainActivity) v.getContext()).getSupportFragmentManager();
FragmentTransaction ft = fm.beginTransaction()
.add(R.id.root, fragment)
.addToBackStack(null);
ft.commit();
在片段中
getFragmentManager().popBackStackImmediate();
返回上一个片段但对我不起作用,仅重定向 pfor 主要活动
解决方案
如果您在片段中使用 viewpager,则使用片段的 childFragmentManager 而不是片段管理器。
片段类:
adapterViewPager = new MyPagerAdapter(getChildFragmentManager());
vpPager.setAdapter(adapterViewPager);
适配器类:
public class MyPagerAdapter extends FragmentPagerAdapter {
private static int NUM_ITEMS = 3;
public MyPagerAdapter(FragmentManager fragmentManager) {
super(fragmentManager);
}
// Returns total number of pages
@Override
public int getCount() {
return NUM_ITEMS;
}
// Returns the fragment to display for that page
@Override
public Fragment getItem(int position) {
switch (position) {
case 0: // Fragment # 0 - This will show FirstFragment
return FirstFragment.newInstance(0, "Page # 1");
case 1: // Fragment # 0 - This will show FirstFragment different title
return FirstFragment.newInstance(1, "Page # 2");
case 2: // Fragment # 1 - This will show SecondFragment
return SecondFragment.newInstance(2, "Page # 3");
default:
return null;
}
}
// Returns the page title for the top indicator
@Override
public CharSequence getPageTitle(int position) {
return "Page " + position;
}
}
推荐阅读
- php - laravel 中的未知或错误时区 ()
- java - java.lang.NoSuchMethodException : package.ClassName。
() 使用类 - mysql - 将 MySQL 数据库中的数据读入 R
- grammar - VXML 语法识别并发送每个用户句子
- docker - 当你使用 Kubernetes 时,你真的需要另一个服务发现或 Kubernetes 内部的 API 网关解决方案吗?
- data-driven-tests - CodeceptJs。有没有办法为 Feature 添加 Datatable 源?
- c - 读取具有动态整数大小的二维数组并垂直输出
- php - php excel为多维数组创建excel
- laravel - 雄辩的搜索与两个表不完全工作?
- android - Retrofit 2 处理动态错误