我有一个应用程序,我正在使用Landscape和potrait模式。我在我的每个活动中都使用了 android:configChanges =“orientation | keyboardHidden”。因此,当我在设备2.3上运行它时,它完全正常工作并且活动没有重新启动。但是当我在android 4.0及更高版本中打开相同的应用程序时,只要方向发生变化,活动就会重新启动。 这是我的xml文件。
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.iconnect.collaborator"
android:versionCode="1"
android:versionName="1.0" >
<uses-sdk
android:minSdkVersion="8"
android:targetSdkVersion="17" />
<supports-screens android:largeScreens="true"
android:normalScreens="true" android:smallScreens="true"
android:anyDensity="true" />
<supports-screens android:smallScreens="true" />
<supports-screens android:normalScreens="true" />
<supports-screens android:largeScreens="true" />
<uses-permission android:name="android.permission.CAMERA" />
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
<uses-feature android:name="android.hardware.camera" />
<uses-feature android:name="android.hardware.camera.autofocus" />
<uses-permission android:name="android.permission.VIBRATE" />
<uses-permission android:name="android.permission.FLASHLIGHT" />
<uses-permission android:name="android.permission.INTERNET"/>
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"/>
<application
android:icon="@drawable/cnlogomini"
android:label="CollaborateNow"
android:largeHeap="true"
android:allowBackup="true"
android:theme="@style/AppTheme" >
<activity android:name="jim.h.common.android.zxinglib.CaptureActivity"
android:screenOrientation="landscape" android:configChanges="orientation|keyboardHidden"
android:theme="@android:style/Theme.NoTitleBar.Fullscreen"
android:windowSoftInputMode="stateAlwaysHidden" />
<activity android:name=".Register"
android:configChanges="orientation|keyboardHidden" ></activity>
<activity android:name=".ppllogincopy"
android:configChanges="orientation|keyboardHidden"></activity>
<activity android:name=".Password"
android:configChanges="orientation|keyboardHidden"></activity>
<activity android:name=".Camerascan"
android:configChanges="orientation|keyboardHidden"></activity>
<activity android:name=".TabGroup1Activity"
android:configChanges="orientation|keyboardHidden"></activity>
<activity android:name=".newtab"
android:configChanges="orientation|keyboardHidden"></activity>
<activity android:name=".SubmitData"
android:configChanges="orientation|keyboardHidden"></activity>
<activity android:name=".peoplelist"
android:configChanges="orientation|keyboardHidden"></activity>
<activity android:name=".GenerateQrcode"
android:configChanges="orientation|keyboardHidden"></activity>
<activity android:name=".contact"
android:configChanges="orientation|keyboardHidden"></activity>
<activity android:name=".peoplelistlogin"
android:configChanges="orientation|keyboardHidden"></activity>
<activity android:name=".Startnew"
android:configChanges="orientation|keyboardHidden"
></activity>
<activity android:name=".projectdetails"
android:configChanges="orientation|keyboardHidden"></activity>
<activity android:name=".Signup"
android:configChanges="orientation|keyboardHidden"></activity>
<activity android:name=".RegisterScan"
android:configChanges="orientation|keyboardHidden"></activity>
<activity android:name=".peoplelistscan"
android:configChanges="orientation|keyboardHidden"></activity>
<activity android:name=".Profile"
android:configChanges="orientation|keyboardHidden"></activity>
<activity android:name=".List"
android:configChanges="orientation|keyboardHidden"></activity>
<activity android:name=".Logout"
android:configChanges="orientation|keyboardHidden"></activity>
<activity android:name=".scanRegister"
android:configChanges="orientation|keyboardHidden"></activity>
<activity android:name=".scanList"
android:configChanges="orientation|keyboardHidden"></activity>
<activity android:name="scanCamera"
android:configChanges="orientation|keyboardHidden"></activity>
<activity android:name="com.iconnect.collaborator.Camera"
android:configChanges="orientation|keyboardHidden"></activity>
<activity android:name=".collaborations"
android:configChanges="orientation|keyboardHidden"></activity>
<activity
android:name="com.iconnect.collaborator.MainActivity"
android:label="@string/app_name" >
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
</application>
</manifest>
答案 0 :(得分:11)
如果您的android:targetSdkVersion="12"
或更少
android:configChanges="orientation|keyboardHidden"
如果您的android:targetSdkVersion="13"
或更多
android:configChanges="orientation|keyboardHidden|screenSize"
来自developer.android的引用
警告:从Android 3.2(API级别13)开始,“屏幕大小” 当设备在纵向和横向之间切换时也会发生变化 取向。因此,如果您希望阻止运行时重新启动 开发API级别13或更高级别时的方向更改(如 由minSdkVersion和targetSdkVersion属性声明),你 除“方向”外,还必须包含“screenSize”值 值。也就是说,你必须decalare 机器人:configChanges = “方向|屏幕尺寸”。但是,如果你的 应用程序目标API级别12或更低,然后您的活动始终 处理此配置更改本身(此配置更改 即使在Android 3.2或Android上运行,也不会重新启动您的活动 更高的设备)。
在此处阅读更多内容:Handling Orientation Change
答案 1 :(得分:0)
您还必须添加screenSize。
“当前可用的屏幕大小已更改。这表示当前可用大小相对于当前宽高比的更改,因此当用户在横向和纵向之间切换时会发生更改。但是,如果您的应用程序针对API级别12或者更低,那么您的活动总是自己处理此配置更改(即使在Android 3.2或更高版本的设备上运行,此配置更改也不会重新启动您的活动)。 在API级别13中添加。“