【发布时间】:2012-03-11 07:33:49
【问题描述】:
这个应用程序是我使用片段等进行的学习练习。它有一个单独的活动来管理一些不同的片段。第一个是 ListFragment (A),它显示应用程序何时启动并从光标加载列表项。单击列表项会通知 Activity 将 ListFragment 替换为该项目的 DetailFragment (B)。如果在查看 (B) 时旋转屏幕,我看到 (B) 在 (A) 的顶部,如下所示:
http://postimage.org/image/uhy016ds7/
我最好的猜测是它与 Android 在配置更改时销毁和重新创建活动有关。我想知道这个问题最干净的解决方案是什么。下面是一些代码 sn-ps,如果我应该发布其他内容,请告诉我。
res/layout/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();
}
【问题讨论】:
-
你看过
alternative resources吗? developer.android.com/guide/topics/resources/… -
嗯,我现在专注于手机屏幕。无论如何,ListFragment 的布局在横向上不会有任何不同。事实上,ListFragment 没有布局 xml,因为它目前只有内置的 ListView。
标签: android fragment overlapping screen-rotation