我使用的是标准Android tabs,我需要从父活动中访问我的标签。
我在MainActivity
中执行以下操作来获取标签:
myTab = ((FirstTabFragment)mAdapter.getItem(index));
问题是我总是得到一个新对象而不是实例,因为getItem
的实现方式如下:
public class TabsPagerAdapter extends FragmentPagerAdapter {
public TabsPagerAdapter(FragmentManager fm) {
super(fm);
}
@Override
public Fragment getItem(int index) {
switch (index) {
case 0:
// Status fragment activity
return new FirstTabFragment();
case 1:
// Mission fragment activity
return new SecondTabFragment();
case 2:
// Team fragment activity
return new ThirdTabFragment();
}
return null;
}
...
我搜索了很多内容,但我仍然无法找到任何有效的解决方案来获取Fragments
的实例。
我需要实例,因为我需要更改片段的视图,因此我需要它的变量。
有什么想法吗?
谢谢!
答案 0 :(得分:1)
最好的方法是使用方法FragmentManager或findFragmentById findFragmentByTag。当然,您需要为FragmentPagerAdapter
创建的每个片段声明ID或TAG。如果我没记错的话,默认实现使用类名作为标记。
答案 1 :(得分:0)
将片段保存在SparseArray
或HashMap
中。在getItem
方法中添加数组中的片段也会覆盖onFragmentDestroy
方法。在方法中,从SparseArray
或HashMap
中删除该项目。现在创建一个像这样的getter方法
public Fragment getFragment(int pos) {
return array.get(pos);
}