2017-04-03 6 views
0

私は、自分が希望するアクティビティの方向を指定することができます:LANDSCAPEまたはPORTRAIT。ユーザーが指定したアクティビティのオリエンテーション

私の活動は、このようにAndroidManifest.xmlをで宣言されています:

<activity 
    android:name=“.ActivityA” 
    android:label="@string/app_name" 
    android:theme="@android:style/Theme.NoTitleBar.Fullscreen" 
    android:configChanges="keyboardHidden" 
    android:windowSoftInputMode="adjustResize"> 
</activity> 

そして、私は

@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    int preferedOrientation = /* Code that get the prefered orientation */ 
    setRequestedOrientation(preferedOrientation); 
    ... 
} 

呼ん活動ののonCreateメソッドではなく、ユーザーがLANDSCAPEを指定した場合、アクティビティが最初に表示されますポートレートで再作成し、次にランドスケープに再作成します。

これをどのように回避できますか?

ありがとうございました。

答えて

0

代わりandroid:configChanges="keyboardHidden"

<activity 
    android:name=“.ActivityA” 
    android:label="@string/app_name" 
    android:theme="@android:style/Theme.NoTitleBar.Fullscreen" 
    android:configChanges="orientation|screenSize" 
    android:windowSoftInputMode="adjustResize"> 
</activity> 

の使用android:configChanges="orientation|screenSize"Documentationを参照してください。

注意:アンドロイド3.2(APIレベル13)で始まる、「画面サイズ」 はまた、肖像画や風景 方向との間の場合、デバイスのスイッチを変更します。あなたが原因 姿勢変化にランタイムの再起動を防止したい場合(minSdkVersionが及びtargetSdkVersion属性によって宣言 など)APIレベル13以上のために開発する場合、したがって、あなた は「orientation」に加えて「screenSize」値を含める必要があります 値。つまり、デカールする必要があります android:configChanges="orientation|screenSize"。ただし、 アプリケーションのAPIレベルが12以下の場合、アクティビティは常に になります(このコンフィグレーションの変更 は、Android 3.2または 上位デバイスで実行していてもアクティビティを再開しません)。

関連する問題