onTextContextMenuItem не вызывается для пользовательских пунктов меню - PullRequest
1 голос
/ 25 января 2010

Я пытаюсь добавить несколько пользовательских пунктов меню в некоторые экземпляры 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 ]

1 голос
/ 27 января 2011

Это очень просто ... после поиска в источниках 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 );
0 голосов
/ 17 ноября 2010

Это будет вызываться в Activity.onContextItemSelected (элемент MenuItem). Вы должны справиться с этим оттуда.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...