繁体   English   中英

Android DialogPreference中的上下文菜单...可以吗?

[英]Context menu in Android DialogPreference… is it possible?

我正在尝试为Android应用程序在DialogPreference创建一个上下文菜单(定位到API级别8,如果相关的话)。 我设法通过轻微的破解使菜单显示(单击ListView的项目时),但是我不知道如何处理任何结果命令。 到目前为止,我有:

  • 在我的onItemClick处理程序中,执行以下操作:

     list.setOnCreateContextMenuListener (new ContextMenuGenerator(control, position)); list.showContextMenuForChild (control); list.setOnCreateContextMenuListener (null); 
  • ContextMenuGenerator执行以下操作:

     public class ContextMenuGenerator implements OnCreateContextMenuListener { // additional code redacted - not necessary for this question @Override public void onCreateContextMenu (ContextMenu menu, View v, ContextMenuInfo menuInfo) { new MenuInflater(context).inflate (R.menu.address_set_preference_popup, menu); } } 

这样可以在正确的时间显示正确的菜单,但是我不知道选择一个项目后会发生什么。 我假设在DialogPreference创建的Dialog上调用了onContextItemSelected(MenuItem) ,但我不知道如何从那里获取可以处理该事件的代码-我看不到对该Dialog进行子类化的任何方法,也没有是否有一种将外部侦听器附加到它或ContextMenu 还有其他我没想到的方法吗?

可能没有办法将侦听器附加到Dialog或ContextMenu本身,但是事实证明ContextMenu包含的各个MenuItem 确实支持侦听器接口。 因此,答案是修改ContextMenuGenerator从而:

    @Override
    public void onCreateContextMenu (ContextMenu menu, View v, ContextMenuInfo menuInfo)
    {
        new MenuInflater(context).inflate (R.menu.address_set_preference_popup, menu);
        for (int i = 0; i < menu.size (); i ++)
            menu.getItem (i).setOnMenuItemClickListener (listener);
    }

listener是一个OnMenuItemClickListener ,我将其传递给构造函数并存储在字段中。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM