“onConfigurationChanged”未在另一个类中调用

时间:2014-01-02 14:53:11

标签: android

我有一个相对布局,几乎覆盖整个设备屏幕。当我改变我的手机方向时,相对布局宽度变为其高度,反之亦然。我尝试在另一个类中实现onConfigurationChanged(它不能在主活动中)手动更改其宽度和高度,但是没有调用它。这是实施:

@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>

我错过了什么吗?这是我的相对布局发生了什么的图像:

RelativeLayout

谢谢你!

1 个答案:

答案 0 :(得分:0)

通过Tenfour04的提示,我在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.