我在这个问题上粉碎了我的头脑。
我的应用在工具栏下方有一个导航抽屉和导航标签。 我想在工具栏中显示一个字幕,只有当它位于确定的标签中时(假设是第二个)。
我已经实现了扩展FragmentPagerAdapter的TabPageAdapter。 然后我编写了代码,所以如果我从左侧导航抽屉中选择一个标签,我只能在第二个标签中显示副标题并将其隐藏在其他标签中。
问题是我无法通过直接从导航标签中选择标签来显示/隐藏字幕。 事实上,即使使用
((AppCompatActivity) getActivity()).getSupportActionBar().setSubtitle(null);
和
String subtitle = //my subtitle;
((AppCompatActivity) getActivity()).getSupportActionBar().setSubtitle(subtitle);
在每个标签的片段中,整个代码不起作用。 我认为问题在于FragmentPagerAdapter(和FragmentStatePagerAdapter):他们的
@Override
public Fragment getItem(int position);
方法也将其他两个标签保留在内存中。
我的 getItem(int position)方法是这样的:
@Override
public Fragment getItem(int position) {
Fragment fragment;
switch (position) {
case MAP_POSITION:
fragment = MapFragment.newInstance(MAP_TYPE);
return fragment;
case PETROL_POSITION:
fragment = PetrolStationListFragment.newInstance(position);
return fragment;
case FAV_POSITION:
return new FavouritesFragment();
}
return null;
}
任何提示?