2

私はアンドロイドが初めてで、基本を学んでいるときにこの問題に遭遇しました。

Google と here で問題を検索しましたが、同様の問題が見つかりません。

私の問題は、画面の向きが横向きに変わったことを検出できないことです。

これが私がここから得たコードです

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

    if (newConfig.orientation == Configuration.ORIENTATION_LANDSCAPE) {
        Toast.makeText(this, "landscape", Toast.LENGTH_SHORT).show();
        System.out.println("orientation landscape");
    } else if (newConfig.orientation == Configuration.ORIENTATION_PORTRAIT){
        Toast.makeText(this, "portrait", Toast.LENGTH_SHORT).show();
        System.out.println("orientation potrait");
    } else{
        Toast.makeText(this, "undefined", Toast.LENGTH_SHORT).show();
        System.out.println("orientation undefined");
    }
}

    <activity android:name=".Hello2011Activity"
              android:label="@string/app_name"
              android:theme="@style/testem"
              android:configChanges="orientation"
              >
        <intent-filter>
            <action android:name="android.intent.action.MAIN" />
            <category android:name="android.intent.category.LAUNCHER" />
        </intent-filter>
    </activity>

ここにログがあります

07-27 16:19:11.935: INFO/ActivityManager(52): Config changed: { scale=1.0 imsi=310/260 loc=en_US touch=3 keys=2/1/2 nav=3/1 orien=2 layout=18}
07-27 16:19:12.065: INFO/ActivityManager(52): Config changed: { scale=1.0 imsi=310/260 loc=en_US touch=3 keys=2/1/2 nav=3/1 orien=1 layout=18}
07-27 16:19:12.305: INFO/System.out(1241): orientation potrait
07-27 16:19:15.485: INFO/ActivityManager(52): Config changed: { scale=1.0 imsi=310/260 loc=en_US touch=3 keys=2/1/1 nav=3/1 orien=2 layout=18}
07-27 16:27:11.465: INFO/ActivityManager(52): Config changed: { scale=1.0 imsi=310/260 loc=en_US touch=3 keys=2/1/2 nav=3/1 orien=2 layout=18}
07-27 16:27:11.665: INFO/ActivityManager(52): Config changed: { scale=1.0 imsi=310/260 loc=en_US touch=3 keys=2/1/2 nav=3/1 orien=1 layout=18}
07-27 16:27:11.885: INFO/System.out(1241): orientation potrait
07-27 16:27:14.035: INFO/ActivityManager(52): Config changed: { scale=1.0 imsi=310/260 loc=en_US touch=3 keys=2/1/1 nav=3/1 orien=2 layout=18}
07-27 16:27:20.401: INFO/ActivityManager(52): Config changed: { scale=1.0 imsi=310/260 loc=en_US touch=3 keys=2/1/2 nav=3/1 orien=2 layout=18}
07-27 16:27:20.675: INFO/ActivityManager(52): Config changed: { scale=1.0 imsi=310/260 loc=en_US touch=3 keys=2/1/2 nav=3/1 orien=1 layout=18}
07-27 16:27:20.865: INFO/System.out(1241): orientation potrait

ご覧のとおり、方向を横向きから縦向きに変更したときのみ通知があり、その逆はありません。

APIレベル7でavd 2.1update1を、APIレベル8でavd 2.2を試しました。OSはEclipse 3.6.2のWindows XP SP 3です。

これはバグですか、それともコードに何か問題がありますか?

4

2 に答える 2

1

私は同じ問題を抱えていますが、orientation|keyboardHidden を使用しても解決しませんでした。誰にもアイデアがありますか?

編集:いくつかの試行錯誤の後、これがうまくいくことがわかりました:

android:configChanges="keyboardHidden|orientation|screenSize"
于 2012-04-28T12:50:51.513 に答える
0

activity-restart-on-rotation-android
how-do-i-detect-screen-rotationandroid:screenOrientation="portrait"アクティビティへの使用は、このように方向を変更しないために使用されます (これはアクティビティタグを に使用できますAndroidManifest.xml)

<activity android:name="testActivity"
            android:screenOrientation="portrait" android:label="@string/app_name">

(これを使用した後、デバイスは方向の変更に意味がありません)

于 2011-07-28T07:12:58.167 に答える