2015-10-20 79 views
0

我有活動,我已經創建了一個包含兩個片段的viewpager。我需要在活動中獲取對現有片段或其視圖的引用,以便在必要時從片段中刷新列表。我正在尋找兩天的解決方案,但此時沒有找到任何解決方案。ViewPager獲取片段參考

因此,這裏是我的適配器

public class SearchPagerAdapter extends FragmentStatePagerAdapter { 
CharSequence Titles[]; 
int NumbOfTabs; 
public SearchPagerAdapter(FragmentManager fm,CharSequence mTitles[], int mNumbOfTabsumb) { 
    super(fm); 
    this.Titles = mTitles; 
    this.NumbOfTabs = mNumbOfTabsumb; 
} 
@Override 
public Fragment getItem(int position) { 
    if(position == 0) 
    { 
     FragmentAyahSearch tab1 = new FragmentAyahSearch(); 
     return tab1; 
    } 
    else 
    { 
     FragmentSurahList tab2 = new FragmentSurahList(); 
     return tab2; 
    } 
} 
@Override 
public void destroyItem(ViewGroup container, int position, Object object) { 
    super.destroyItem(container, position, object); 
} 

@Override 
public CharSequence getPageTitle(int position) { 
    return Titles[position]; 
} 
@Override 
public int getCount() { 
    return NumbOfTabs; 
} 

}

下面

,我創建MainActivity一個viewpager和適配器

searchAdapter = new SearchPagerAdapter(getSupportFragmentManager(), searchTitles, Numboftabs); 
      pager.setAdapter(searchAdapter); 
      tabs.setViewPager(pager); 

我希望你能幫助我,因爲我失去了我的想法在這。

回答

1
I would suggest maintain a list like 
private List<Fragment> frag = new ArrayList<Fragment>(); 
then 
public class SearchPagerAdapter extends FragmentStatePagerAdapter { 
CharSequence Titles[]; 
int NumbOfTabs; 
public SearchPagerAdapter(FragmentManager fm,CharSequence mTitles[], int mNumbOfTabsumb) { 
    super(fm); 
    this.Titles = mTitles; 
    this.NumbOfTabs = mNumbOfTabsumb; 
} 
@Override 
public Fragment getItem(int position) 
{ 
    Fragment fragment = frag.get(position); 
    if(fragment == null) 
    { 
     if (position == 0) 
     { 
      fragment = new FragmentAyahSearch();  
     } 

     else 
     { 
      fragment = new FragmentSurahList(); 

     } 
    } 
    return fragment; 
} 

@Override 
public CharSequence getPageTitle(int position) { 
    return Titles[position]; 
} 
@Override 
public int getCount() { 
    return frag.size(); 
} 

now if you want the reference of any fragment 
just call , frag.get(<position>) will return you desire frgament 
+0

哇!有用!非常感謝你!你節省了我的時間 –

+0

@JoeSilent歡迎你:) :) – dex