我读了很多关于这个问题的帖子,比如[this link] [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);
...
答案 0 :(得分:11)
我认为这会起作用.........
<activity android:name=".MyActivity"
android:configChanges="orientation|keyboardHidden"
android:label="@string/app_name">
从Android 3.2(API级别13)开始,当设备在纵向和横向之间切换时,“屏幕尺寸”也会改变。因此,如果要在开发API级别13或更高级别时因为方向更改而阻止运行时重新启动,则必须使用
android:configChanges="orientation|screenSize"
答案 1 :(得分:2)
我做到了。 我将此代码添加到了清单中,它完美无缺。
<activity
android:name="?"
android:label="@string/?"
android:theme="@style/?"
android:configChanges="orientation|screenSize">
如果您想在设备轮换时更改某些内容,则需要在活动下添加此内容。
public void onConfigurationChanged(Configuration newConfig) {
super.onConfigurationChanged(newConfig);
// Checks the orientation of the screen
if (newConfig.orientation == Configuration.ORIENTATION_LANDSCAPE) {
Toast.makeText(this, "landscape", Toast.LENGTH_SHORT).show();
} else if (newConfig.orientation == Configuration.ORIENTATION_PORTRAIT){
Toast.makeText(this, "portrait", Toast.LENGTH_SHORT).show();
}
}
答案 2 :(得分:1)
在该活动的清单文件中写下这两行代码。
似乎这可以解决您的问题。<activity
android:name=".YourActivity"
android:configChanges="orientation|keyboardHidden"/>
答案 3 :(得分:1)
您的活动将在任何配置更改时重新启动。最有可能是因为键盘状态发生变化而重新启动。尝试将此添加到活动的属性:
android:configChanges="orientation|keyboard|keyboardHidden"
答案 4 :(得分:0)
如果您正在使用API级别12或更低级别
在menifest文件中,在声明您的活动名称后立即放下以下内容。
android:configChanges="orientation"
e.g .-
<activity
android:name=".NameOfYourActivity"
android:configChanges="orientation"/>
在Android 3.2(API级别13)或更高版本的屏幕尺寸中,旋转变化也会发生变化,因此也要声明这一点。
为此,
android:configChanges="orientation|screenSize"
答案 5 :(得分:0)
以下可能是原因
事件:screenSize
当前可用的屏幕尺寸已更改。这表示当前可用大小相对于当前宽高比的变化,因此当用户在横向和纵向之间切换时会发生变化。但是,如果您的应用程序的目标是API级别12或更低,那么您的活动始终会自行处理此配置更改(即使在Android 3.2或更高版本的设备上运行,此配置更改也不会重新启动您的活动)。 在API级别13中添加。
所以除了“orientation”之外还添加“screenSize”