以编程方式在不同设备上的片段中关闭上下文菜单

时间:2014-09-30 06:16:31

标签: android listview android-fragments contextmenu

我的片段中有一个列表视图。在longclick上该列表视图中的项目时,我有一个上下文菜单。菜单中的最后一个选项是关闭它(关闭菜单)。我就这样做了:

public boolean onContextItemSelected(MenuItem item) {
    if (item.getGroupId() == 0) {
        switch(item.getItemId()) {
            case 1...
            case 2...
            case Constants.Context_Menu_Items.CONTEXT_MENU_CLOSE:
                getActivity().closeContextMenu();
            break;
        }
    }
    return super.onContextItemSelected(item);
}

我检查了我的三星Galaxy S3上的应用程序 - 它运行得很好。现在我将APK发送给朋友,检查他的Nexus 3上的应用程序,这个选项对他不起作用,上下文菜单没有关闭。

可能是什么原因以及如何解决?

1 个答案:

答案 0 :(得分:0)

https://developer.android.com/reference/android/app/Activity.html#onContextItemSelected(android.view.MenuItem)中的文档说“返回false以允许正常的上下文菜单处理继续进行,在此处使用它是真的”。

因此,为了确保代码有效,我会写

case Constants.Context_Menu_Items.CONTEXT_MENU_CLOSE:
    return true;

而不是

case Constants.Context_Menu_Items.CONTEXT_MENU_CLOSE:
    break;

因此避免调用super.onContextItemSelected(item)