0

У меня есть пара текст ссылки в моих Android приложения, которые являются либо адреса электронной почты или веб-ссылки. Я использую следующий фрагмент кода, чтобы установить их (пример для веб-ссылки):OnClickListener для TextView не дозвонились

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 никогда не вызывается.

+0

вам нужно использовать это одно. 'LinkMovementMethod' или' OnClick' – SorryForMyEnglish

ответ

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); 

    } 
}); 
+0

Thx. Хотя действительно странно, что 'OnClickListener' не перезаписывает настройки' LinkMovementMethod'. Тем не менее, я не понимаю, для чего действительно подходит LinkMovementMethod. Обратите внимание, что в случае ссылок по электронной почте вы должны префикс строки 'url' с' 'mailto:" '. – JJD

0

Невозможно рассказать по фрагменту кода, который вы вставили. Пожалуйста, покажите больше кода. Например, как выглядит ваше объявление textView?

0

У вас есть слушатель OnClick на родительское представление, что может быть Переопределение вид текста? Также вы можете попытаться не использовать анонимный внутренний класс в качестве слушателя, а вместо этого использовать view.OnClickListener ниже для событий click.

myActivity extends Activity implements View.OnClickListener { 
    @Override 
    publiv void onClick(View v) { 
     if(V.getId() == textViewId) { 
      // do work 
     } 
    } 
}