【问题标题】:How could I customize context menu item click callback?如何自定义上下文菜单项单击回调?
【发布时间】:2011-08-05 01:51:19
【问题描述】:

就我而言,我有一个ListView,其中包含两种视图、文件夹和图像。当长按一个文件夹时,会出现一个ContextMenu,其中包含“进入文件夹”和“为文件夹添加书签”两个项目,而对于图像,则会出现一个带有“查看”和“删除”的ContextMenu

一般来说,我应该在Activity 中覆盖onContextItemSelected,并在一个开关盒中列出所有可能的菜单项ID。但是对文件夹的操作和对图像的操作是两个完全不相关的东西,对吧?将这两个(甚至更多)东西放在一个函数中是不是很奇怪?

我想知道,有没有一种方法可以为每个上下文菜单设置回调处理程序,而不是搞乱onContextItemSelected?任何建议表示赞赏。

【问题讨论】:

  • 您使用的是自定义 ListAdapter 吗?是否可以在其中放置上下文菜单侦听器?我建议将此作为评论,因为我以前没有这样做过,但这是我考虑的第一件事。
  • @aha 抱歉,ListAdapter 似乎不支持。

标签: android contextmenu


【解决方案1】:

我认为使用 ContextMenu 既不灵活也不方便。

是的,在一个方法中处理 10 个或更多不同的动作是很奇怪的,所以也许最好使用 AlertDialogs 而不是 ContextMenu。看这个: http://developer.android.com/guide/topics/ui/dialogs.html#AddingAList

看起来像上下文菜单,对吧?您可以在元素的 OnLongClickListener 或 AdapterView.OnItemLongClickListener(在 ListView 的情况下)中显示对话框,并且可以在 DialogInterface.OnClickListener 中处理操作。

也看看我问的问题,或许对你也有帮助:How to create dialog that looks exactly like ContextMenu?

【讨论】:

    【解决方案2】:

    在您的onCreateContextMenu()-方法中,您可以通过检查传递的View-参数来确定是否单击了文件夹或图像。

    之后,您可以为您的文件夹创建一个单独的菜单,为您的图像创建一个菜单(每个菜单都有一个不同的 XML 文件)并扩展它。

    onContextItemSelected()-方法中,您只需检查所有可能的条目(更不用说加载了哪个菜单)。由于您只有四个不同的可能菜单项,这不会太糟糕。

    【讨论】:

    • 这就是我所做的。而在实际项目中,有“email it”、“upload to picasa”等10多个条目。T_T
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-09-21
    • 2010-10-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多