未在自定义菜单项上调用onTextContextMenuItem

时间:2010-01-25 13:55:47

标签: android contextmenu

我正在尝试将一些自定义菜单项添加到某些EditText实例中。它们出现在菜单中,但是当我单击按钮时,不会调用onTextContentMenuItem方法。如果重要的话,EditText实例位于ListView中。

有关此事的任何建议?

相关代码:

class DocumentFragment extends EditText {

  public DocumentFragment(Context context) {
   super(context);
  }

  @Override
  public void onCreateContextMenu(ContextMenu menu) {
   menu.add(Menu.CATEGORY_ALTERNATIVE, CONVERT_TO_H1, Menu.NONE, "Convert to H1");
      menu.add(Menu.CATEGORY_ALTERNATIVE, CONVERT_TO_P, Menu.NONE,  "Convert to P");
      super.onCreateContextMenu(menu);
  }

  @Override
  public boolean onTextContextMenuItem(int id) {
   Log.i("ID", String.valueOf(id)); // The id of CONVERT_TO_{H1,P} never appears.
   return super.onTextContextMenuItem(id);
  }
 }

2 个答案:

答案 0 :(得分:1)

EditTextTextView来源查找后,这很容易...

首先,您必须在MenuItem.OnMenuItemClickListener类中实现接口EditText

其次,您必须为接口实现onMenuItemClick,如此

@Override
public boolean onMenuItemClick(MenuItem item)
{
    return onTextContextMenuItem( item.getItemId() );
}

最后,向每个菜单项添加监听器

menu.add( Menu.NONE, MyMenu, Menu.CATEGORY_SECONDARY, "Menu text" ) ).setOnMenuItemClickListener( this );

答案 1 :(得分:0)

这将在Activity.onContextItemSelected(MenuItem item)中调用。你必须从那里处理它。