我读了很多关于这个问题的帖子,比如[这个链接][1],一个解决方案是添加方向configChanges来显示和处理onConfigurationChanged事件,以防止onCreate活动在旋转时再次被调用。我这样做了,事件被正确触发,然而,在此执行之后,onCreate方法也被执行!为什么?我错过了什么?谢谢
显然,
<activity
android:name="webPush"
android:configChanges="keyboardHidden|orientation"/>
活性,
@Override
public void onConfigurationChanged(Configuration newConfig) {
super.onConfigurationChanged(newConfig);
setContentView(R.layout.vistaaib);
}
@Override
protected void onCreate(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
setContentView(R.layout.vistaaib);
...
6条答案
按热度按时间yzuktlbb1#
参见http://web.archive.org/web/20120130201824/https://developer.android.com/guide/topics/resources/runtime-changes.html-
从Android 3.2(API级别13)开始,当设备在纵向和横向方向之间切换时,“屏幕大小”也会发生变化。因此,如果您想在开发API级别13或更高版本时防止运行时因方向更改而重新启动,则必须用途:
doinxwow2#
我做了这个。我把这个代码添加到清单,它工作得很好。
如果您想在设备旋转时更改某些内容,则需要在Activity下添加此内容。
xwbd5t1u3#
在该Activity的清单文件中编写这两行代码。
看起来这会解决你的问题。
<activity android:name=".YourActivity" android:configChanges="orientation|keyboardHidden"/>
fwzugrvs4#
您的Activity将在任何配置更改时重新启动。很可能是因为键盘状态更改而重新启动。请尝试将以下内容添加到Activity的属性中:
idfiyjo85#
如果您正在为API级别12或更低级别工作
在menifest文件中,在声明活动名称后添加以下内容。
例如:
在android 3.2(API级别13)或更高版本中,屏幕大小也会随旋转变化而变化,因此也要声明这一点。
为此,
yacmzcpb6#
以下可能是原因
事件:screenSize
当前可用的屏幕大小已更改。这表示当前可用大小相对于当前宽高比的更改,因此当用户在横向和纵向之间切换时也会更改。但是,如果您的应用程序针对API级别12或更低级别,则您的Activity始终会自行处理此配置更改(此配置更改不会重新启动您的Activity,即使在Android 3.2或更高版本的设备上运行也是如此)。
因此沿着除了“orientation”之外,还要加上“screenSize