Ничто не говорит о том, что вам нужно переключать фрагменты, даже если базовый код структурирован, чтобы его было легко сделать.
Например, я просто использую вкладки, чтобы изменить видимость элементов в когда-то загруженной иерархии макета представления, и это прекрасно работает. Это кажется гораздо более эффективным, если ваша иерархия представлений не так сложна, так как устраняет транзакции фрагментов. Предположительно, изменение видимости довольно эффективно.
Вот неполный фрагмент кода, чтобы дать вам представление о том, как игнорировать транзакции фрагмента и делать свое дело:
public class AudioManagerTabListener<T extends Fragment> implements
ActionBar.TabListener {
@Override
public void onTabSelected(Tab tab, FragmentTransaction ft) {
switch ((Integer) tab.getTag()) {
case TAG_SHARED:
mGridViewWrapper.setVisibility(View.VISIBLE);
break;
case TAG_PLAYING:
mNowPlayingWrapper.setVisibility(View.VISIBLE);
break;
case TAG_PLAYLIST:
break;
case TAG_ARTISTS:
break;
case TAG_ALBUMS:
break;
case TAG_SONGS:
break;
}
if (DBG.AUDIO) {
Log.d(TAG,
"SettingsTabListener- onTabSelected - Tag: "
+ tab.getText());
}
}
@Override
public void onTabUnselected(Tab tab, FragmentTransaction ft) {
switch ((Integer) tab.getTag()) {
case TAG_SHARED:
mGridViewWrapper.setVisibility(View.GONE);
break;
case TAG_PLAYING:
mNowPlayingWrapper.setVisibility(View.GONE);
break;
case TAG_PLAYLIST:
break;
case TAG_ARTISTS:
break;
case TAG_ALBUMS:
break;
case TAG_SONGS:
break;
}
if (DBG.AUDIO) {
Log.d(TAG,
"SettingsTabListener- onTabUnSelected - Tag: "
+ tab.getText());
}
}
@Override
public void onTabReselected(Tab tab, FragmentTransaction ft) {
if (DBG.AUDIO) {
Log.d(TAG, "SettingsTabListener- onTabReselected- Position: "
+ tab.getPosition());
}
}
}