我有一个 FragmentPagerAdapter
,在 fragment 类中我有一个需要在主 Activity 中使用的公共(public)方法。
在这一点上,我不知道如何访问包含该方法的 fragment 。我可以修改下面类中的某些内容以将 id 或其他内容设置为 fragment 吗?
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 ?
访问 fragment 方法的任何其他方式都不错。
编辑了更多信息:
我真的迷失了。但是,我也有一个 ViewPager,这些 fragment 与 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));
}
有什么方法可以和 fragment 通信吗?
最佳答案
像这样:
switch (position) {
case 0:
Fragment f = new Fragment_1();
f.setId(...);
return f;
case 1:
...
}
这假设您的 fragment 中有一个 setId 方法。
然而,我所做的是为每个 fragment 定义一个静态字符串 TAG,然后我可以使用 Fragment_1.TAG 访问它。
关于android - 如何在 FragmentPagerAdapter 的某些覆盖方法中设置 fragment Id?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32720959/