2011-04-18 45 views
2

由于某些原因,每次屏幕方向改变时,如果应用程序打开,我的应用程序会关闭上下文菜单。我看到的所有应用程序在旋转屏幕后都保持菜单打开,但我无法弄清楚为什么我的应用程序正在关闭它们。每当屏幕方向发生变化时,Android选项菜单都会关闭

我没有处理自己的配置更改,我的onCreate方法(我知道在每次方向更改后调用)都不会触摸菜单。我希望对此问题有所了解。

+0

我不加入这个作为一个答案,因为我是一个不自信,如果我是正确的......但我相信你将不得不处理这个状态并保存它在onSaveInstanceState()调用中被覆盖。 – Maximus 2011-04-18 16:58:28

+0

我解决了它!我只是忘记从我自己的onSaveInstanceState()方法中调用super.onSaveInstanceState(),所以通常保存的默认状态信息没有被保存。 – FernandoPR 2011-04-18 19:41:45

回答

1

的文本菜单默认情况下旋转时,Android把destroy()方法,然后的onCreate(),但因为消失:

如果你不希望Android通过正常的活动去破坏,和重新创建过程;相反,您想要自己处理重新创建视图,您可以在AndroidManifest.xml中的元素上使用android:configChanges属性。

<activity 
    android:name=".MainActivity" 
    android:launchMode="singleTask" 
    android:configChanges="orientation|keyboardHidden"> 
</activity> 

这种方式contextMenu在手机旋转时未关闭,因为onCreate()方法未被调用。

本主题还可以帮助 - Activity restart on rotation Android

+0

我明白摧毁和重建过程。我不明白的是我如何中断默认行为。我创建了一个简单的活动,只有下面的代码: @Override public void onCreate(Bundle savedInstanceState){ super.onCreate(savedInstanceState); setContentView(R.layout.main); } @Override public boolean onCreateOptionsMenu(Menu menu){ MenuInflater inflater = getMenuInflater(); inflater.inflate(R.layout.menu,menu); 返回true; } 当我运行这个并翻转方向时,菜单保持打开状态。 – FernandoPR 2011-04-18 18:52:23

相关问题