我知道这个问题已经被问过了,但我的情况有点不同:
我的游戏有2种不同的布局文件;一个用于纵向模式,一个用于横向模式当我旋转屏幕时,onCreate方法重新启动我的游戏(再次创建所有元素)。我不希望这发生,所以我在清单中写了这一行:
android:configChanges="orientation"
它有效,onCreate未被调用,但新布局未正确显示!
我尝试将以下代码放在我的Activity中,但它只是做了一些奇怪的事情:
@Override
public void onConfigurationChanged(Configuration newConfig) {
super.onConfigurationChanged(newConfig);
setContentView(R.layout.gameview);
}
我该如何解决这个问题? thanx guys
答案 0 :(得分:4)
首先要了解android中的方向变化是如何工作的:
默认情况下,活动会在方向更改事件上重新启动(并且会抛出onCreate
)。
如果你在清单中写android:configChanges="orientation"
- 这意味着它不会被重新创建,只需重新测量和重绘视图树。
关于您的代码的评论:
setContentView
。处理这种情况的一般方法是:
onSaveInstanceState
onCreate
方法恢复游戏状态(如果提供)(savedInstanceState
param不为空)。答案 1 :(得分:0)
对于任何对象,您应该使用onRetainNonConfigurationInstance()来保存状态和恢复状态getLastNonConfigurationInstance()。或硬编码设置android:screenOrientation =“portrait / landscape”清单。