我正在使用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);
}
}
答案 0 :(得分:44)
只需将以下代码写入onConfigurationChanged
方法并测试
if(newConfig.orientation==Configuration.ORIENTATION_LANDSCAPE){
Log.e("On Config Change","LANDSCAPE");
}else{
Log.e("On Config Change","PORTRAIT");
}
并将android:configChanges="keyboardHidden|orientation"
写入您最明显的文件中,如下所示
<activity android:name="TestActivity"
android:configChanges="keyboardHidden|orientation">
它在我身边工作,我希望它可以帮助你。
如果您使用的是平板电脑,请将|screenSize
添加到android:configChanges
答案 1 :(得分:15)
您还应该注意:
警告:从Android 3.2(API级别13)开始,“屏幕大小” 当设备在纵向和横向之间切换时也会发生变化 取向。因此,如果您希望阻止运行时重新启动 开发API级别13或更高级别时的方向更改(如 由minSdkVersion和targetSdkVersion属性声明),你 除“方向”外,还必须包含“screenSize”值 值。也就是说,你必须decalare 机器人:configChanges = “方向|屏幕尺寸”。但是,如果你的 应用程序目标API级别12或更低,然后您的活动始终 处理此配置更改本身(此配置更改 即使在Android 3.2或Android上运行,也不会重新启动您的活动 更高的设备)。
答案 2 :(得分:3)
问题在于android:configChanges="orientation|keyboardHidden"
。
如果从androidmanifest.xml中删除|keyboardHidden
,则onConfigurationChanged仅在从横向旋转到纵向时触发,而不是从纵向旋转到横向时(至少在默认模拟器中)。
希望这有帮助。
答案 3 :(得分:2)
在活动文件中写下以下代码。
@Override
public void onConfigurationChanged(Configuration newConfig) {
super.onConfigurationChanged(newConfig);
if(newConfig.orientation==Configuration.ORIENTATION_LANDSCAPE){
Log.e("On Config Change","LANDSCAPE");
}
else{
Log.e("On Config Change","PORTRAIT");
}
}
还要在清单文件中写下以下代码:
<activity
android:name=".activities.TestActivity"
android:configChanges="orientation|screenSize|keyboardHidden"
/>
答案 4 :(得分:0)
将此行写在android Manifest.xml 文件中:
<activity
android:name="MyActivity"
android:configChanges="orientation|keyboardHidden" />
答案 5 :(得分:0)
除了上述答案之外:如果您覆盖onConfigurationChanged
方法并更新清单文件,则表示您正在自行处理configurationchanges
。因此添加:
setContentView(R.layout.layout.xml);
在onConfigurationChanged
方法中 - 布局是布局文件 - 将解决问题。