1

我正在使用 Android 2.3.3 API 构建一个应用程序。我需要识别方向的变化并执行一些操作。所以我在Android Manifest中添加了以下内容,

android:configChanges="orientation|keyboardHidden

我重写了方法

public void onConfigurationChanged(Configuration newConfig)

它在 Android 2.3.3 上完美运行。但是当我在 4.1.2 上安装相同的应用程序(使用 2.3.3 API 构建)时,不会调用 onConfigurationChanged()。我在网上搜索了解决方案,人们建议在 android manifest 中添加以下内容。

 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

仅仅因为您针对给定的 API 级别进行编译或定位并不意味着您不能明确支持较低的 API 级别。尝试在清单中添加类似以下内容。我从您问题中提到的版本中获取了级别。

<uses-sdk
    android:minSdkVersion="10"
    android:targetSdkVersion="16"/>
于 2012-12-27T06:02:50.583 回答
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 回答
0

请注意您的情况: 配置更改 屏幕方向已更改-用户已旋转设备。注意:如果您的应用程序以 API 级别 13 或更高级别为目标(由 minSdkVersion 和 targetSdkVersion 属性声明),那么您还应该声明“screenSize”配置,因为当设备在纵向和横向之间切换时它也会改变。

谢谢

于 2012-12-27T06:23:55.467 回答