3

縦向きモードと横向きモードで異なるレイアウトがあり、 onConfigurationChanged()コールバックもオーバーライドする必要があります。しかし、問題は、電話の向きを横向きに変更すると、横向きのレイアウトが機能しないことです。

onConfigurationChangedこのコールバックの問題なのか、それとも他の何かがそれを引き起こしているのか、誰か教えてもらえますか?

どんな助けでも感謝します。

4

2 に答える 2

10

onConfigurationChanged() コールバックもオーバーライドする必要があります

なんで?

しかし、問題は、電話の向きを横向きに変更すると、横向きのレイアウトが機能しないことです。

「機能しない」ということは、ランドスケープレイアウトが有効にならないことを意味すると推測します。これは、あなたが行ったことを考えると予想される動作です。

この問題を解決するには、理想的には を削除しandroid:configChanges="keyboardHidden|orientation"ます。その属性を入れるのは最後の手段として、通常は縦向きと横向きのレイアウト ファイルが別々にないアクティビティに対して行う必要があります。

于 2011-03-17T13:17:30.610 に答える
2

きっとあなたのお役に立てること間違いなしです...

@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    int ot = getResources().getConfiguration().orientation;
    switch (ot) {
    case Configuration.ORIENTATION_LANDSCAPE:
        setContentView(R.layout.main_land);
        break;
    case Configuration.ORIENTATION_PORTRAIT:
        setContentView(R.layout.main);
        break;
    }
    Toast.makeText(this, "Helloo", Toast.LENGTH_SHORT).show();
}
enter code here
@Override
public void onConfigurationChanged(Configuration newConfig) {
    // TODO Auto-generated method stub
    super.onConfigurationChanged(newConfig);

    int ot = getResources().getConfiguration().orientation;
    switch (ot) {
    case Configuration.ORIENTATION_LANDSCAPE:
        setContentView(R.layout.main_land);
        break;
    case Configuration.ORIENTATION_PORTRAIT:
        setContentView(R.layout.main);
        break;
    }
}

@Override
public Object onRetainNonConfigurationInstance() {
    // TODO Auto-generated method stub
    return super.onRetainNonConfigurationInstance();
}

}

マニフェスト ファイルにこの行を追加します。 android:configChanges="keyboardHidden|orientation"

于 2012-11-23T13:41:56.667 に答える