2012-01-30 13 views
0

2つのレイアウトファイルを作成しました.1つはポートレート用、もう1つはランドスケープ用です。ここで肖像画のための:風景のためにここフラグメント使用時のAndroidの向きの変更

<?xml version="1.0" encoding="utf-8"?> 
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    android:layout_width="fill_parent" 
    android:layout_height="fill_parent" 
    android:orientation="horizontal" > 

    <fragment 
     android:id="@+id/fragment_newslist" 
     android:name="com.app.NewsListFragment" 
     android:layout_width="0dp" 
     android:layout_height="match_parent" 
     android:layout_weight="1" > 
    </fragment> 

</LinearLayout> 

<fragment 
     android:id="@+id/fragment_newslist" 
     android:name="com.app.NewsListFragment" 
     android:layout_width="0dp" 
     android:layout_height="match_parent" 
     android:layout_weight="1" > 
    </fragment> 

    <fragment 
     android:id="@+id/fragment_viewnews" 
     android:name="com.app.ViewNewsFragment" 
     android:layout_width="0dp" 
     android:layout_height="match_parent" 
     android:layout_weight="2" > 
    </fragment> 

それからのonCreate()メソッド内のレイアウトをロードするアクティビティを作成しました。これまでのところ、これはうまく動作します。このアクティビティにはそれ以上のコードは含まれていません。

NewsListFragmentクラス内で、私はViewNewsFragmentが利用可能かどうかをチェックしています。そうでない場合、ユーザがListItemをタップすると、新しいアクティビティ(ViewNewsActiviy)が開始されます。使用可能な場合、データは既存のフラグメントに表示されます。したがって、2つのクラスがあります:1. ViewNewsActivityと2.ViewNewsFragment

私が実際に望むのは、向きの変更に関するレイアウトに変更することです。デバイスがポートレートからランドスケープに変わったとき、私は典型的なデュアルペインのレイアウトを持ちたいと思っています。それが風景から肖像画に変わった場合は、リストを単独で表示したいので、詳細は別の「ビュー」として表示する必要があります。

しかし、これを行う方法は?これまでは、風景や肖像画でアプリを起動するとうまく動作します。しかし、方向を変更すると、レイアウトは最初に設定されたままになります。

本当にありがとうございました:) ありがとうございます!

イェンス

答えて

1

しかし、どのようにこれを行うには?これまでは、風景や肖像画でアプリを起動するとうまく動作します。しかし、方向を変更すると、レイアウトは最初に設定されたままになります。

アンドロイドは自動的に破壊し、姿勢変化にあなたの活動を再作成し、そのonCreate()への各呼び出しは、右のレイアウトを取得しますします。

これはあなたのために起こっていない場合、android:configChanges属性をマニフェストの<activity>に追加するなどして、何かをやりました。

+0

はい、ただし、私は再読み込みするアクティビティは行いません。私はちょうど1つの断片を取り除きたい。 – user1177708

+3

@ user1177708:あなたの活動を破壊して再作成することをAndroidに許可してください。古いアクティビティと新しいアクティビティの間にフラグメントを保持する場合は、 'FragmentTransaction'を使用してフラグメントを作成し、' setRetainInstance(true) 'を呼び出します。 – CommonsWare

関連する問題