我有一個FragmentPagerAdapter
,在片段類中我有一個公共方法,我需要從主要活動中使用。 在這一點上,我不知道如何訪問包含該方法的片段。我可以修改下面的類來設置ID或某些東西的碎片?如何在FragmentPagerAdapter的某些覆蓋方法中設置fragment ID?
public class SectionsPagerAdapter extends FragmentPagerAdapter {
public SectionsPagerAdapter(FragmentManager fm) {
super(fm);
}
@Override
public Fragment getItem(int position) {
switch (position) {
case 0:
return new Fragment_1();
case 1:
return new Fragment_2();
case 2:
return new Fragment_3();
}
return null;
}
@Override
public int getCount() {
return 3;
}
@Override
public CharSequence getPageTitle(int position) {
Locale l = Locale.getDefault();
switch (position) {
case 0:
return getString(R.string.fg_1).toUpperCase(l);
case 1:
return getString(R.string.fg_2).toUpperCase(l);
case 2:
return getString(R.string.fg_3).toUpperCase(l);
}
}
return null;
}
}
如何設置Fragment ID或Fragment標籤或某些內容以便後續訪問該片段?
任何其他方式來訪問片段方法可能是好的。
編輯與更多信息:
我真的失去了這一點。但是,我也有一個ViewPager,這些片段與actionBar標籤關聯。
mViewPager = (ViewPager) findViewById(R.id.pager);
mViewPager.setAdapter(mSectionsPagerAdapter);
mViewPager.addOnPageChangeListener(new ViewPager.OnPageChangeListener(){
@Override
public void onPageScrolled(int position, float positionOffset, int positionOffsetPixels) {
}
@Override
public void onPageSelected(int position) {
actionBar.setSelectedNavigationItem(position);
}
@Override
public void onPageScrollStateChanged(int state) {
}
});
for (int i = 0; i < mSectionsPagerAdapter.getCount(); i++) {
actionBar.addTab(actionBar.newTab().setText(mSectionsPagerAdapter.getPageTitle(i)).setTabListener(this));
}
有什麼方法可以與碎片進行通信嗎?
'FragmentPagerAdapter'不太適合您的用例。要麼使用某種分離的通信(例如事件總線),要麼切換到不同的'PagerAdapter'實現(例如[我的'ArrayPagerAdapter'](https://github.com/commonsguy/cwac-pager))。 – CommonsWare
編輯更多信息。 – osanfer
看看這個問題的答案:http://stackoverflow.com/questions/14035090/how-to-get-existing-fragments-when-using-fragmentpageradapter –