12

私はアンドロイドの開発に慣れています。ポートレートとランドスケープモードの画面が別にあります。今私は私の方向を変更するが、その対応する画面(axml)を読み込む必要があります私の活動を再開したくありません。私はオリエンテーションが変更されたときにアクティビティが再開しないようにします

を試みた

[アクティビティー(LABEL = "MyActivity"、ConfigurationChanges = Android.Content.PM.ConfigChanges.Orientation)]

上記ラインは活性が再開取得停止しかし同じ画面(axml)を読み込みます。 お勧めします。あなたの活動にこのコードを書く

public void onConfigurationChanged(Configuration newConfig) { 
    super.onConfigurationChanged(newConfig); 

    if (newConfig.orientation == Configuration.ORIENTATION_PORTRAIT) { 
     setContentView(R.layout.portrait); 
     //do other initialization 
    } else if (newConfig.orientation == Configuration.ORIENTATION_LANDSCAPE) { 
     setContentView(R.layout.landscape); 
     //do other initialization 
    } 
} 

答えて

40

:あなたはオリエンテーションを自分で変更処理したいOSに指定されているので おかげ

+0

11-07 13:44:47.143:E/AndroidRuntime(2586):原因:java .lang.IllegalStateException:MapActivity内に単一のMapViewを持つことのみが許可されています これを含めるとこのエラーが表示されます –

+0

これらのコードをmainActivityまたはこれらのアクティビティとR.layout.landscapeViewおよびR.layoutの各フラグメントに追加する場所.portraitViewは2つの異なるレイアウトです – Kailas

+0

うわー!私が欲しかったすべて!:) –

5

は、今、あなたはこのようなレイアウトを自分への変更を処理する必要があります

@Override 
public void onConfigurationChanged(Configuration newConfig) { 
    super.onConfigurationChanged(newConfig); 

    if (getResources().getConfiguration().orientation == Configuration.ORIENTATION_LANDSCAPE) { 
     setContentView(R.layout.landscapeView); 

    } else { 
     setContentView(R.layout.portraitView); 
    } 
} 

そしてまたあなたのマニフェストファイルに次の行を追加します

android:configChanges="orientation|keyboardHidden|screenSize" 

これは両方を処理するため、アクティビティを再開せず、オリエンテーションの変更に応じてレイアウトを読み込みます。

+1

オリエンテーションの変更にOnCreate()メソッドが呼び出されています。 – sujay

+0

@surjayマニフェストファイルの CopsOnRoad

関連する問題