20

私のアプリでは、特定の を除いて、FragmentActivity複数の がすべて縦向きモードになっています。の フッター を介して間を移動します。FragmentFragmentFragmentViewFragmentActivity

向きが変わると、Viewこの特定のレイアウトが異なります(実際には同じ名前ですが、ウィジェットが異なります)。横向きモードのときは、レイアウトとフッターから特定のウィジェットを削除し、縦向きモードに戻ったときにすべてを元に戻したいFragmentと思います。FragmentViewViewFragmentActivity

必要なすべてのデータを に保存しonSavedInstanceState()ましたが、 を適切Fragmentに復元できるように、向きの変更をテストするのに最適な場所はどこですか?View

android にandroid :configChanges="orientation"がないため、オーバーライドonConfigurationChange()してテストできるかどうかわかりFragmentません。Manifest

4

2 に答える 2

38

このチェックを onCreate() に保持します。デバイスを回転させると、アプリが再起動されます。そのため、アプリの再起動時に onCreate が再度呼び出されます。

int currentOrientation = getResources().getConfiguration().orientation;
if (currentOrientation == Configuration.ORIENTATION_LANDSCAPE) {
   // Landscape
}
else {
   // Portrait  
}
于 2012-12-14T11:10:56.377 に答える
19

onConfigurationChangedフラグメントの関数をオーバーライドすることで、方向の変更を制御することもできます。

    @Override
    public void onConfigurationChanged(Configuration newConfig) {

        super.onConfigurationChanged(newConfig);
        int currentOrientation = getResources().getConfiguration().orientation;

        if (currentOrientation == Configuration.ORIENTATION_LANDSCAPE){
           Log.v("TAG","Landscape !!!");
        }
        else { 
           Log.v("TAG","Portrait !!!");
       }
   }
于 2015-01-16T08:59:13.683 に答える