屏幕旋转后保持上下文菜单

时间:2009-11-02 23:58:44

标签: android contextmenu

我有一个活动就是onCreate方法:

  

registerForContextMenu(theView);

和onCreateContextMenu:

super.onCreateContextMenu(menu, v, menuInfo);
menu.add(blablabla);

这很好用,但问题是当屏幕旋转时,上下文菜单会消失。 如何解决这个问题?

感谢阅读!

3 个答案:

答案 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,   网格加载了列表   上一次活动的照片:

http://android-developers.blogspot.com/2009/02/faster-screen-orientation-change.html?utm_source=eddie

答案 2 :(得分:0)

我可能错了,但是从我所知道你不能坚持它,然而(这是我可能出错的部分)你可以在旋转后动态打开菜单。给出持久性的幻觉。