我正在尝试将一些自定义菜单项添加到某些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);
}
}
答案 0 :(得分:1)
在EditText
和TextView
来源查找后,这很容易...
首先,您必须在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)中调用。你必须从那里处理它。