【发布时间】:2015-09-22 15:29:22
【问题描述】:
我有一个FragmentPagerAdapter,在片段类中我有一个需要从主要活动中使用的公共方法。
在这一点上,我不知道如何访问包含该方法的片段。我可以在下面的类上修改一些东西来设置 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 标签或其他东西以便以后访问 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实现(例如,myArrayPagerAdapter)。 -
编辑了更多信息。
-
看看这个问题的答案:stackoverflow.com/questions/14035090/…
标签: android android-fragments fragmentpageradapter