Используется причина, вызывающая анонимные функции: они никогда не должны вызываться другим кодом, поскольку они «настраивают» код, который должен быть вызван (наряду с предоставлением возможностей для функций и переменных).
Другими словами, они похожи на программы, которые «делают классы» в начале программы. После того, как они создаются (автоматически), единственными доступными функциями являются те, которые возвращаются анонимной функцией. другие «скрытые» функции все еще существуют вместе с любым состоянием (переменные, заданные при создании области).
Очень круто.
Это известная ошибка в платформе Android. Вот ссылка на вопрос .
Я исправил его с помощью custom TextEntry. Изменен onSelectionChanged и поместил там код из loopj!
Мой код:
@Override
protected void onSelectionChanged(int selStart, int selEnd) {
if (selStart >= 0) {
super.onSelectionChanged(selStart, selEnd);
} else {
setSelection(getText().length());
}
}
Для тех, кто все еще борется с этой проблемой, размещение этого кода в вашей работе onResume
будет решить его:
textEntry.setSelection(textEntry.getText().length(), textEntry.getText().length());
Его последнее, но вчера я выяснил эту проблему. Проблема в вашем случае - ваш конец до начала, как 7 .... 0, что неверно, если вы хотите выделить текст, который вы начинаете, должен быть меньше вашего конца. Посмотрите на представленный пример, он отлично работает.
Ответ для тех, кто все еще имеет эту проблему.
String searchText = "Your search String";
String qr_code = "Your String";
int length = searchText.length();
if (length > 0) {
//color your text here
int index = qr_code.indexOf(searchText);
SpannableString sb = new SpannableString(qr_code);
ForegroundColorSpan fcs = new ForegroundColorSpan(getResources().getColor(R.color.colorAccent));
sb.setSpan(fcs, index, (index+length), Spanned.SPAN_EXCLUSIVE_INCLUSIVE)
holder.textViewShortCode.setText(sb);
} else {
textViewShortCode.setText(Html.fromHtml(qr_code));
}