Это приложение является обучающим упражнением для меня, среди прочего, с использованием фрагментов. У этого есть единственное действие, которое управляет некоторыми различными фрагментами. Первый - это ListFragment (A), который показывает, когда приложение запускается и загружает элементы списка из курсора. Щелчок по элементу списка уведомляет действие о замене ListFragment на DetailFragment (B) для этого элемента. Если, глядя на (B), я поворачиваю экран, я вижу (B) поверх (A), например:
http://postimage.org/image/uhy016ds7/
По-моему, это связано с тем, что Android уничтожает и воссоздает действие при изменении конфигурации. Мне интересно, что является самым чистым решением этой проблемы. Далее следуют некоторые фрагменты кода, дайте мне знать, если есть что-то еще, что я должен опубликовать.
Рез / макет / home.xml
<?xml version="1.0" encoding="utf-8"?>
<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/fragment_container"
android:layout_width="fill_parent"
android:layout_height="fill_parent" >
<fragment
android:id="@+id/fragment_place_list"
android:name="com.simbiosys.apps.foodfast.ui.PlaceListFragment"
android:layout_width="fill_parent"
android:layout_height="fill_parent" >
</fragment>
</FrameLayout>
MyActivity.onCreate
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.home);
placeListFragment = (PlaceListFragment) getSupportFragmentManager().findFragmentById(
R.id.fragment_place_list);
}
MyActivity.showDetailPane
public void showDetailPane(String id, String reference) {
placeDetailFragment = PlaceDetailFragment.newInstance(id, reference);
FragmentManager fragmentManager = getSupportFragmentManager();
FragmentTransaction ft = fragmentManager.beginTransaction();
ft.addToBackStack(null);
ft.hide(placeListFragment);
ft.replace(R.id.fragment_container, placeDetailFragment);
ft.show(placeDetailFragment);
ft.commit();
}