2015-01-20 128 views
1

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

回答

1

是的,您可以創建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

相關問題