Android 在另一个类中未调用“OnConfiguration Changed”
我有一个相对的布局,几乎覆盖了整个设备屏幕。当我改变手机的方向时,相对的布局宽度变成了它的高度,反之亦然。我尝试在另一个类中实现onConfigurationChanged它不能在主活动中手动更改其宽度和高度,但没有调用它。以下是实现:Android 在另一个类中未调用“OnConfiguration Changed”,android,Android,我有一个相对的布局,几乎覆盖了整个设备屏幕。当我改变手机的方向时,相对的布局宽度变成了它的高度,反之亦然。我尝试在另一个类中实现onConfigurationChanged它不能在主活动中手动更改其宽度和高度,但没有调用它。以下是实现: @Override public void onConfigurationChanged(Configuration newConfig) { super.onConfigurationChanged(newConfig); if (newCo
@Override
public void onConfigurationChanged(Configuration newConfig) {
super.onConfigurationChanged(newConfig);
if (newConfig.orientation == Configuration.ORIENTATION_PORTRAIT) {
// I'd change its width and height here...
} else if (newConfig.orientation == Configuration.ORIENTATION_LANDSCAPE) {
// ... and here.
}
}
我还将其放在manifest.xml文件中:
<activity
android:name="br.com.dialogscreator.MySecondActivity"
android:configChanges="orientation|keyboardHidden|screenSize" >
</activity>
我遗漏了什么吗?以下是我的相对布局发生的情况:
现在谢谢你 根据的提示,我在mainActivity中创建了一个标志,以了解每个类中的屏幕方向。请看下面我是如何做到这一点的:
public static boolean isScreenPortrait;
@Override
public void onConfigurationChanged(Configuration newConfig) {
super.onConfigurationChanged(newConfig);
if (newConfig.orientation == Configuration.ORIENTATION_PORTRAIT) {
isScreenPortrait = true;
} else if (newConfig.orientation == Configuration.ORIENTATION_LANDSCAPE) {
isScreenPortrait = false;
}
}
然后,当我需要时,我可以从另一个类调用标志,例如:
if (MainActivity.isPortrait) { // Do what you want when the screen orientation is portrait.
OnConfiguration Changed仅在当前可见的活动上被调用。更好的方法是使用SharedReferences存储设备方向状态。静态变量可能并不总是按照您在Android活动中期望的方式工作。