我有一个活动就是onCreate方法:
registerForContextMenu(theView);
和onCreateContextMenu:
super.onCreateContextMenu(menu, v, menuInfo);
menu.add(blablabla);
这很好用,但问题是当屏幕旋转时,上下文菜单会消失。 如何解决这个问题?
感谢阅读!
答案 0 :(得分:5)
以下是解决方案:
contextMenu消失了,因为默认情况下在旋转android调用destroy()然后onCreate()但是:
如果您不希望Android通过正常活动销毁和重新创建过程;相反,你想要自己处理重新创建视图,你可以在AndroidManifest.xml中的元素上使用android:configChanges属性。
<activity
android:name=".SmsPopupActivity"
android:theme="@android:style/Theme.Dialog"
android:launchMode="singleTask"
android:configChanges="orientation|keyboardHidden"
android:taskAffinity="net.everythingandroid.smspopup.popup">
</activity>
这样我手机旋转时我的contextMenu没有关闭,因为没有调用onCreate()方法。
另见:
答案 1 :(得分:2)
根据Android开发者博客:
Activity类有一个名为onRetainNonConfigurationInstance()的特殊方法。这个 方法可以用来传递一个 任意对象你未来的自我和 Android很聪明,可以称之为 方法仅在需要时。 [...] 可以总结实施 像这样:
@Override public Object
onRetainNonConfigurationInstance() {
final LoadedPhoto[] list = new LoadedPhoto[numberOfPhotos];
keepPhotos(list);
return list; }
在新活动中,在onCreate()中, 所有你需要做的就是获得你的对象 回来就是打电话 getLastNonConfigurationInstance()。在 Photostream,这个方法被调用 如果返回的值不为null, 网格加载了列表 上一次活动的照片:
答案 2 :(得分:0)
我可能错了,但是从我所知道你不能坚持它,然而(这是我可能出错的部分)你可以在旋转后动态打开菜单。给出持久性的幻觉。