У меня есть приложение, в котором я хочу показать TextView (или EditText), который позволяет пользователю выбрать какой-либо текст, а затем нажать кнопку, чтобы что-то сделать с этим текстом. Реализация этого на Android-версиях до Honeycomb не проблема, но на Honeycomb и выше стандартного долгого нажатия - это показать панель действий с параметрами Copy/Cut/Paste. Я могу перехватить long-press, чтобы показать свою собственную панель действий, но тогда я не получу отображаемые ручки выбора текста.
Как только я начал свой собственный ActionMode, как мне получить отображаемые дескрипторы текста?
Вот код, который я использую для запуска ActionMode, который работает, за исключением того, что не отображаются обработчики текста:
public boolean onLongClick(View v) {
if(actionMode == null)
actionMode = startActionMode(new QuoteCallback());
return true;
}
class QuoteCallback implements ActionMode.Callback {
public boolean onCreateActionMode(ActionMode mode, Menu menu) {
MenuInflater inflater = mode.getMenuInflater();
inflater.inflate(R.menu.quote, menu);
return true;
}
public boolean onPrepareActionMode(ActionMode mode, Menu menu) {
return false;
}
public boolean onActionItemClicked(ActionMode mode, MenuItem item) {
switch(item.getItemId()) {
case R.id.quote:
Log.d(TAG, "Selected menu");
mode.finish();
// here is where I would grab the selected text
return true;
}
return false;
}
public void onDestroyActionMode(ActionMode mode) {
actionMode = null;
}
}