我在一个新项目中使用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>
我认为我的代码很好,我已经阅读了很多例子并且它们是一样的。
发生了什么事?
由于
答案 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"