Кнопка переполнения принудительно завершает режим действия

У меня есть EditText, и я хочу, чтобы пользователь мог выбрать какой-то текст и применить базовое форматирование к выделенному тексту (полужирный, курсив и т. Д.) . Тем не менее, я все еще хочу, чтобы отображались стандартные параметры копирования, вырезания и вставки. Я где-то читал в документации Android, что для этого вы должны вызвать setCustomSelectionActionModeCallback () в EditText и передать ему ActionModeCallback (), что я и сделал. Вот мой код:

В методе onCreate () моего действия:

myEditText.setCustomSelectionActionModeCallback(new TextSelectionActionMode());

Объявление обратного вызова:

private class TextSelectionActionMode implements ActionMode.Callback {
    @Override
    public boolean onActionItemClicked(ActionMode mode, MenuItem item) {
        return false;
    }

    @Override
    public boolean onCreateActionMode(ActionMode mode, Menu menu) {
        menu.add("Bold");
        return true;
    }

    @Override
    public void onDestroyActionMode(ActionMode mode) {
    }

    @Override
    public boolean onPrepareActionMode(ActionMode mode, Menu menu) {
        return false;
    }
}

Проблема, с которой я сталкиваюсь, заключается в том, что когда я нажимаю кнопку переполнения (для доступа к пункту меню «Полужирный»), ActionMode немедленно закрывается. Если я установлю его так, чтобы он всегда отображался как действие, используя следующее:

MenuItem bold = menu.add("Bold");
bold.setShowAsActionFlags(MenuItem.SHOW_AS_ACTION_ALWAYS);

Он работает нормально, и я могу щелкнуть по нему (хотя он, очевидно, ничего не делает). Что мне здесь не хватает?

Edit: Просто хотел добавить, что я сталкиваюсь с той же проблемой, если я действительно раздуваю меню вместо того, чтобы добавлять пункты меню программно. И снова проблема исчезнет, ​​если я заставлю ее всегда отображать как действие.

8
задан mturco 27 February 2012 в 03:46
поделиться