2011-09-12 5 views
1

横向き/縦向きのアクティビティを使用できるようにしたい。アクティビティは、現在の方向(アクティビティを開始する前の状態)のレイアウトから始まります。その後、それに固執する必要があり、向きの変化に反応しません。現在の向きのAndroid開始レイアウト、その後は回転を無効にする

私は (あまりにもスーパーコールをコメントしようとしたが、例外に、このリード)活動のマニフェストに

android:configChanges="orientation" 

を入れて、何もしないように

@Override 
public void onConfigurationChanged(Configuration newConfig) { 
// TODO Auto-generated method stub 
    super.onConfigurationChanged(newConfig); 
} 

を上書きしようとしたが、このローテーションの変更を無効にする効果はありません。変更が処理され、レイアウトが再構築されますが、正しいものは使用されません。

そして、私が常に1つだけのモードを指定する必要がありそうですし、それは私はどちらか必要なものではありませんので、私は

android:screenOrientation 

を使用することはできません。 とにかく、何かを指定すると、回転するとアクティビティが再構築されます。

を行いません

android:screenOrientation="nosensor" 

で試してみました は、ここで現在の向きのロックは、コード http://www.samcoles.co.uk/mobile/android-lock-and-unlock-screen-orientation/

であります。しかしXMLでの向きを指定すると、それは同様の効果を得ることができる(レイアウトを保持しますが、活動を再構築する)。それは私が望むものに少し近いです(オリエンテーションを開始から維持します)が、活動を再構成し、それがまったく反応しないようにします。

+0

にこれを追加してみ?私は固執するために横向きの向きを得ることができませんでした。これは、 'android:configChanges =" orientation "'を使用して私の造園XMLが選択されないようにしました。また、あなたが示しているように 'onConfigurationChanged'をオーバーライドすると、この効果がありました。 – Azurespot

答えて

1

android:configChanges = "orientation"はエミュレータではまったく動作しませんが、デバイス上で正常に動作します。

+0

エミュレータを使用しています。現在どのデバイスでもテストできません。 – Ixx

+0

私は同じ問題を抱えています。エミュレータでは動作しませんでしたが、いくつかの電話機で試してみましたが、うまく動作します – superM

0

は、あなたが解決策を見つけるか

@Override 
public void onConfigurationChanged(Configuration newConfig) { 
    newConfig.orientation = getResources().getConfiguration().orientation; 
    super.onConfigurationChanged(newConfig); 
} 
+0

これはレイアウトを保持していますが、アクティビティは再構築されます。 – Ixx

0

はのonCreate

if (this.getResources().getConfiguration().orientation == ActivityInfo.SCREEN_ORIENTATION_PORTRAIT){ 
     setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_PORTRAIT);} 
     else {setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE);} 
関連する問題