onConfigurationChanged在旋转设备时不起作用

时间:2012-12-04 12:28:07

标签: android screen-orientation onconfigurationchanged

我在一个新项目中使用api 2.3.3,我使用我的平板电脑三星Galaxy tab 2,当我改变方向时会创建一个新的活动。

这是我正在尝试的简单代码:

主要活动

public class MainActivity extends Activity {

        @Override
        public void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.activity_main);
            Log.e("TAG","ONCREATE");
        }

        @Override
        public void onConfigurationChanged(Configuration newConfig) {
            super.onConfigurationChanged(newConfig);
            if (getResources().getConfiguration().orientation==Configuration.ORIENTATION_LANDSCAPE) {
                Log.e("TAG","LANDSCAPE");
            }else{
                Log.e("TAG","PORTRAIT");
            }
        }

清单

  <uses-sdk
        android:minSdkVersion="8"
        android:targetSdkVersion="14" />

    <application
        android:icon="@drawable/ic_launcher"
        android:label="@string/app_name"
        android:theme="@style/AppTheme" >
        <activity
            android:name=".MainActivity"
            android:label="@string/title_activity_main"
            android:configChanges="orientation|keyboardHidden|keyboard"> 
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />            
                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
        </activity>
    </application>

我认为我的代码很好,我已经阅读了很多例子并且它们是一样的。

发生了什么事?

由于

3 个答案:

答案 0 :(得分:2)

@Override
protected void onRestoreInstanceState(Bundle savedInstanceState) 
{
    super.onRestoreInstanceState(savedInstanceState);
    if (savedInstanceState != null) 
    {
        if (getResources().getConfiguration().orientation == Configuration.ORIENTATION_PORTRAIT)
        {
            // code for portrait
        }
        else if (getResources().getConfiguration().orientation == Configuration.ORIENTATION_LANDSCAPE)
        {
            // code for landscape
        }

    }
}

尝试上面的代码而不是onConfigurationChanged方法,它对我有用。

答案 1 :(得分:1)

如果要构建的API大于13,则需要使用:

android:configChanges="orientation|screenSize"

答案 2 :(得分:0)

尝试删除键盘&amp;清单文件中的keyboardHidden单词并检查它。像:

android:configChanges="orientation"