Android 在屏幕旋转后保持上下文菜单
我有一个活动,它在onCreate方法上执行: registerForContextMenu(视图) 在onCreateContextMenu中:Android 在屏幕旋转后保持上下文菜单,android,contextmenu,Android,Contextmenu,我有一个活动,它在onCreate方法上执行: registerForContextMenu(视图) 在onCreateContextMenu中: super.onCreateContextMenu(menu, v, menuInfo); menu.add(blablabla); 这很好,但问题是当屏幕旋转时,上下文菜单消失了。 如何解决这个问题 谢谢你的阅读 我可能错了,但据我所知,您无法坚持,但是(这是我可能错的部分),您可以在旋转后动态打开菜单。给人持久的错觉。以下是解决方案: cont
super.onCreateContextMenu(menu, v, menuInfo);
menu.add(blablabla);
这很好,但问题是当屏幕旋转时,上下文菜单消失了。
如何解决这个问题
谢谢你的阅读 我可能错了,但据我所知,您无法坚持,但是(这是我可能错的部分),您可以在旋转后动态打开菜单。给人持久的错觉。以下是解决方案: 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>
根据Android开发者博客:
Activity类有一个名为OnRetainonConfiguration Instance()的特殊方法。这
方法可用于传递
任意的对象你未来的自我和
Android足够聪明,可以称之为
方法仅在需要时使用。[...]
可对实施情况进行总结
像这样:
在新活动的onCreate()中,
你要做的就是得到你的目标
回来就是打电话
GetLastNonConfiguration实例()。在里面
Photostream,调用此方法
如果返回的值不为null,
网格将加载以下列表:
上一次活动的照片:
我试过了。有一个名为openContextMenu(view)的方法,但无法使其工作:(这可能很明显,但只是出于理智,您是否仅在调用视图上的registerForContextMenu后才调用openContextMenu?是的。尝试在onCreate和onResume上调用它,但都失败了:(模拟按下菜单键怎么样?啊,我很抱歉,我以为这是普通菜单。在这种情况下,它会改变一切。嗯,让我用我的应用程序做一些谷歌搜索并测试一下,看看能找到什么。)
@Override public Object
onRetainNonConfigurationInstance() {
final LoadedPhoto[] list = new LoadedPhoto[numberOfPhotos];
keepPhotos(list);
return list; }