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
        }
    }
}
Другие вопросы по тегам