这个应用程序对我来说是一个使用片段等的学习练习。它有一个单独的活动来管理一些不同的片段。第一个是 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();
}