OnClickListener for TextView не вызывается
У меня есть несколько текстовых ссылок в моих приложениях для Android, которые являются либо адресами электронной почты, либо веб-ссылками. Я использую следующий фрагмент кода для их настройки (пример для веб-ссылки):
TextView textView = (TextView) findViewById(textViewId);
spannedText = Html.fromHtml("<a href=\"" + url + "\">" + titleText + "</a>");
textView.setText(spannedText, TextView.BufferType.SPANNABLE);
textView.setMovementMethod(LinkMovementMethod.getInstance());
textView.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
// Handle click
}
});
TextView
не имеет специальных установленных атрибутов, таких как android:linksClickable
, android:clickable
или же android:focusable
, Его стиль наследует от @android:style/TextAppearance.Small
,
По какой-то причине OnClickListener
никогда не звонят.
3 ответа
Удалить этот код
textView.setMovementMethod(LinkMovementMethod.getInstance());
и вручную добавьте следующую ссылку
textView.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
// Handle click
Intent intent = new Intent(Intent.ACTION_VIEW, Uri.parse(url));
startActivity(intent);
}
});
Невозможно узнать из фрагмента кода, который вы вставили. Пожалуйста, покажи больше кода. Например, как выглядит ваше объявление textView?
Есть ли у вас прослушиватель onClick для родительского представления, которое может перекрывать текстовое представление? Также вы можете попробовать не использовать анонимный внутренний класс в качестве слушателя, а вместо этого использовать view.OnClickListener ниже для событий щелчка.
myActivity extends Activity implements View.OnClickListener {
@Override
publiv void onClick(View v) {
if(V.getId() == textViewId) {
// do work
}
}
}