我用的是onConfigurationChanged()
,当我从LandScape切换到Portrait时,它调用if (newConfig.orientation == Configuration.ORIENTATION_PORTRAIT)
,从LandScape切换到Portrait。但是当我从Portrait切换到Land-Scape时,它没有切换到LandScape,因为它调用if (newConfig.orientation == Configuration.ORIENTATION_LANDSCAPE)
,所以它没有从LandScape切换到Portrait。请帮助。
public void onConfigurationChanged(Configuration newConfig) {
super.onConfigurationChanged(newConfig);
//int orientation = this.getResources().getConfiguration().orientation;
if (newConfig.orientation == Configuration.ORIENTATION_PORTRAIT) {
Log.d("Entered to change as Portrait ","PPPPPPPPPPPPPPPPP");
setContentView(R.layout.settings);
} else if (newConfig.orientation == Configuration.ORIENTATION_LANDSCAPE) {
Log.d("Entered to change as LandScape ","LLLLLLLLLLLLLLLLLLLL");
setContentView(R.layout.settings);
}
}
6条答案
按热度按时间rekjcdws1#
只需将下面的代码写入
onConfigurationChanged
方法并进行测试并像这样将
android:configChanges="keyboardHidden|orientation"
写入manifiest文件这对我很有效,希望对你有帮助.
如果您使用的是平板电脑,请将
|screenSize
添加到android:configChanges
0wi1tuuw2#
如文档的Handling Runtime Changes部分所述,您还应了解:
注意事项:从Android 3.2开始(API级别13),当设备在纵向和横向之间切换时,“屏幕大小”也会更改。因此,如果您希望在为API级别13或更高级别开发时防止由于方向更改而导致运行时重新启动(如minSdkVersion和targetSdkVersion属性所声明),除了“orientation”值之外,您还必须包含“screenSize”值。即,您必须标记android:configChanges=“orientation|但是,如果您的应用面向API级别12或更低级别,则您的Activity始终自行处理此配置更改(此配置更改不会重启您的Activity,即使在Android 3.2或更高版本的设备上运行)。
9rnv2umw3#
android:configChanges="orientation|keyboardHidden"
出现问题。如果您从androidmanifest.xml中删除
|keyboardHidden
,则onConfigurationChanged仅在您从横向旋转到纵向时触发,而不会在您从纵向旋转到横向时触发(至少在默认模拟器中)。希望这个有用。
vs3odd8k4#
除上述答案外:如果您在更新清单文件的同时覆盖
onConfigurationChanged
方法,则表示您正在自己处理configurationchanges
。因此添加:在您的
onConfigurationChanged
方法中-其中layout是您的布局文件-将修复该问题。vawmfj5a5#
在您的活动文件中写入以下代码。
另外,在清单文件中编写以下代码:
iaqfqrcu6#
在android Manifest.xml 文件中写入以下行: