このアプリは、とりわけフラグメントを使用して私にとって学習の練習です。これは、いくつかの異なるフラグメントを管理する単一のアクティビティを持っています。最初はListFragment(A)で、アプリケーションがいつ起動し、カーソルからリスト項目を読み込むかを示します。リスト項目をクリックすると、その項目のListFragmentをDetailFragment(B)に置き換えるようアクティビティに通知されます。 (B)を見ながら、私は、画面を回転させた場合、私はこのように、(A)の上に(B)を参照してください。画面の回転後にAndroidのフラグメントが重なって表示される
http://postimage.org/image/uhy016ds7/
私の最高の推測では、それはAndroidは破壊と再としなければならないです構成変更に対するアクティビティを作成します。私はこの問題の最もクリーンな解決策が何であるか疑問に思います。いくつかのコードスニペットが続き、投稿する必要があるものがあるかどうかを教えてください。
RES /レイアウト/ 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();
}
あなたは「代替リソース」を調べましたか? http://developer.android.com/guide/topics/resources/providing-resources.html#AlternativeResources –
さて、私は現時点で電話スクリーンに焦点を当てています。ListFragmentのレイアウトは、とにかくランドスケープでは違いはありません。実際には、ListFragmentのレイアウトxmlは存在しません。なぜなら、現在のListFragmentにはすべて組み込みのListViewがあるからです。 – Karakuri