【问题标题】:Persisting a context menu after screen rotation屏幕旋转后保留上下文菜单
【发布时间】:2009-11-02 23:58:43
【问题描述】:

我有一个活动,它是 onCreate 方法:

registerForContextMenu(theView);

在 onCreateContextMenu 中:

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

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

感谢阅读!

【问题讨论】:

    标签: android contextmenu


    【解决方案1】:

    解决办法如下:

    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() 方法。

    另见:

    【讨论】:

      【解决方案2】:

      根据 Android 开发者博客:

      Activity 类有一个称为 onRetainNonConfigurationInstance() 的特殊方法。这 方法可以用来传递一个 任意对象你未来的自己和 Android 足够聪明,可以调用它 仅在需要时使用方法。 [...] 可以总结一下实现 像这样:

      @Override public Object
      onRetainNonConfigurationInstance() {
      final LoadedPhoto[] list = new LoadedPhoto[numberOfPhotos];
      keepPhotos(list);
      return list; }
      

      在新活动中,在 onCreate() 中, 你所要做的就是得到你的对象 回来就是打电话 getLastNonConfigurationInstance()。在 Photostream,调用此方法 如果返回值不为空, 网格加载了列表 之前活动的照片:

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

      【讨论】:

        【解决方案3】:

        我可能是错的,但据我所知你不能坚持,但是(这是我可能错的部分)你可以在旋转后动态打开菜单。给人一种持久的错觉。

        【讨论】:

        • 我试过了。有一个名为 openContextMenu(view) 的方法,但无法使其工作:(
        • 这可能很明显,但只是为了理智,您是否仅在视图上调用 registerForContextMenu 后才调用 openContextMenu?
        • 是的。试图在 onCreate 和 onResume 上调用它,但两者都失败了:(
        • 模拟被按下的菜单键怎么样?
        • 抱歉,我以为这是普通菜单。那么在这种情况下,它会改变一切。嗯,让我做一些谷歌搜索并用我的应用程序测试一下,看看我能找到什么
        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多