【问题标题】:Returning the same fragment for multiple tabs为多个选项卡返回相同的片段
【发布时间】:2015-01-20 21:47:19
【问题描述】:

我有 3 个标签,但我有一个片段。是否可以为 3 个选项卡使用一个片段?

目前我的 FragmentPagerAdapter 中有这个:

@Override
        public Fragment getItem(int position) {
            if (position == 0) {
                return new FragmentTwo(region,"1");
            } else if(position == 1){
                return new FragmentTwo(region,"2");
            }
            return new FragmentTwo(region,"3");
        }

但只在一个标签中显示所有数据..

我已经编辑了我的代码,但仍然在一个选项卡中获取所有数据。 目前:

@Override
        public Fragment getItem(int position) {
            return FragmentTwo.newInstance(region, position);
        }

&&

static FragmentTwo newInstance(String region,int position) {
        FragmentTwo frag=new FragmentTwo();
        Bundle args=new Bundle();
        args.putInt("KEY_POSITION", position);
        args.putString("REGION", region);
        if(position == 0){
            args.putString("TYPE","A");
        }
        else if(position == 0){
            args.putString("TYPE","B");
        }
        else{
            args.putString("TYPE","C");
        }
        frag.setArguments(args);

        return(frag);
    }

为了创建我的 FragmentPagerAdapter,我调用 getSupportFragmentManager();

【问题讨论】:

标签: android android-viewpager fragment fragmentpageradapter


【解决方案1】:

是的,您可以创建 FragmentTwo 的实例,将其保存在字段/变量中,并将其用作函数中的返回数据。

需要注意的一点是,您不应该为片段使用带有参数的构造函数。使用带有参数的 Bundle。带参数的构造函数可能会导致片段出现问题。

看看这个帖子:Best practice for instantiating a new Android Fragment

【讨论】:

  • 我实现了它,但仍然在一个选项卡中获取所有数据。检查了它 。谢谢:)
  • 您仍在创建片段的新实例...您仍在调用 FragmentTwo frag=new FragmentTwo();这会创建一个新片段。您只需要创建一次片段并将实例保存到变量中,例如 private FragmentTwo mFragment;然后返回这个实例。并创建一个公共方法来重置您片段中的数据。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多