1

Android 2.3.3 API でアプリを作成しています。向きの変化を認識し、何らかのアクションを実行する必要があります。そこで、Android マニフェストに以下を追加しました。

android:configChanges="orientation|keyboardHidden

そして、メソッドをオーバーライドします

public void onConfigurationChanged(Configuration newConfig)

Android 2.3.3 で完璧に動作します。しかし、同じアプリ (2.3.3 API でビルド) を 4.1.2 にインストールすると、onConfigurationChanged() は呼び出されません。私は解決策をオンラインで検索しましたが、人々はAndroidマニフェストに以下を追加することを提案しています。

 android:configChanges="orientation|keyboardHidden|screenSize"

上記のステートメントでアプリをビルドし、4.1.2 API でビルドすると、4.1.2 デバイスで完全に動作します。しかし、2.3.3 にはインストールできません。2.3.3 API に「screenSize」オプションがありません。両方をサポートするには、どうすればよいですか?

ありがとう、カーシック

4

4 に答える 4

2

こんにちは私のAndroidManifest.xmlを見てください

<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.example"
android:versionCode="1"
android:versionName="1.0" >

<uses-sdk
    android:minSdkVersion="8"
    android:targetSdkVersion="10" 
    android:maxSdkVersion="16"/>

<application
    android:allowBackup="true"
    android:icon="@drawable/ic_launcher"
    android:label="@string/app_name"
    android:theme="@style/AppTheme" >
    <activity 
        android:name=".ConfigrationTask"
        android:configChanges="orientation|keyboardHidden"
        >
        <intent-filter>
            <action android:name="android.intent.action.MAIN" />
            <category android:name="android.intent.category.LAUNCHER"/>
        </intent-filter>

    </activity>
</application>

于 2012-12-27T06:52:55.180 に答える
1

参考までに、私が使用したコードの下を見てください:

    @Override
public void onConfigurationChanged(Configuration newConfig) {
    super.onConfigurationChanged(newConfig);
    if(newConfig.orientation==Configuration.ORIENTATION_LANDSCAPE){
        Toast.makeText(getBaseContext(),"On Config Change LANDSCAPE", Toast.LENGTH_LONG).show();
    }else{
        Toast.makeText(getBaseContext(),"On Config Change PORTRAIT", Toast.LENGTH_LONG).show();
    }
}
于 2012-12-27T07:09:49.140 に答える
1

特定の API レベルに対してコンパイルまたはターゲットにしたからといって、それより低い API レベルを明示的にサポートできないわけではありません。次のようなものをマニフェストに追加してみてください。あなたの質問に記載されているバージョンからレベルを取得しました。

<uses-sdk
    android:minSdkVersion="10"
    android:targetSdkVersion="16"/>
于 2012-12-27T06:02:50.583 に答える
0

あなたのケースでは、この点に注意してください: config changes 画面の向きが変更されました — ユーザーがデバイスを回転させました。注: アプリケーションが API レベル 13 以上 (minSdkVersion 属性と targetSdkVersion 属性で宣言) をターゲットにしている場合は、「screenSize」構成も宣言する必要があります。これは、デバイスが縦向きと横向きの間で切り替わったときにも変更されるためです。

ありがとうございました

于 2012-12-27T06:23:55.467 に答える