Столкнулся с такой проблемой. Есть графический слой для фрагментов A и Б:
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent" >
<LinearLayout android:id="@+id/list_manager_container_layout"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_centerHorizontal="true"
android:orientation="horizontal">
</LinearLayout>
</RelativeLayout>
Сначала создается фрагмент А. При нажатии на кнопку в фрагменте А, на его месте должен появиться фрагмент Б. И наоборот, при нажатии на кнопку в фрагменте Б, на его месте должен появиться фрагмент А.
FragmentManager.replace() не подходит, т.к. фрагмент А при "возврате" из Б перерисовывать не нужно, а фрагмент Б наоборот,нужно создать\перерисовать при каждом переключении на него. Для этих целей я создал
метод в своем Activity, переключающий фрагменты:
public void switchFragment(android.support.v4.app.Fragment switchtofrag,
android.support.v4.app.Fragment switchfromfrag,
int switcharea,
boolean redraw) {
android.support.v4.app.FragmentTransaction ft = mVCollectionPageAdapter.mFM.beginTransaction();
ft.setTransition(FragmentTransaction.TRANSIT_FRAGMENT_FADE);
if (switchtofrag.isAdded()) {
if (redraw) {
ft.detach(switchtofrag);
ft.attach(switchtofrag);
}
ft.show(switchtofrag);
ft.hide(switchfromfrag);
} else {
ft.hide(switchfromfrag);
ft.add(switcharea, switchtofrag);
ft.show(switchtofrag);
}
ft.setTransition(FragmentTransaction.TRANSIT_FRAGMENT_FADE);
ft.commit();
}
Соответветственно, при переключении с А на Б использую redraw=true, с Б на А redraw=false.
Проблема вся в том, что при переключении с А на Б, если он уже существует - switchtofrag.isAdded()=true, сначала на доли секунды появляется старая, неперерисованная версия Б и потом мгновенно уже перерисованная. Выглядит очень это неприглядно. Пробы с перестановкой местами ft.show, ft.hide ничего
не принесли. Как избавиться от такого эффекта? Возможно есть иные способы решения подобных задач? Взываю к Android спецам.