为多个选项卡返回相同的片段

问题描述:

我得到了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();

+1

欢迎您使用相同的片段类所有选项卡。这是我的样本之一,这样做︰https://github.com/commonsguy/cw-omnibus/tree/master/ViewPager/Fragments – CommonsWare 2015-01-20 21:49:59

+0

我认为问题是如何使用相同的片段类实例,而不是片段类。 – teamnorge 2015-07-25 12:06:28

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

有一点需要注意的是,你不应该使用具有Fragments参数的构造函数。使用包含参数。带参数的构造函数可能会导致Fragments问题。

看看这篇文章就指出:Best practice for instantiating a new Android Fragment

+0

我实现了它,但仍然在一个选项卡中获取所有数据。检查了它 。谢谢:) – David 2015-01-20 22:28:03

+1

你还在创建你的碎片的新实例...你仍然在调用FragmentTwo frag = new FragmentTwo();这创建了一个新的片段。你需要创建你的片段ONLY ONCE并将instace保存到一个变量中,例如private FragmentTwo mFragment;然后返回这个实例。并创建一个公开的方法,重置你的数据在你的片段。 – JanBo 2015-01-20 22:37:19