0

我有一对夫妇文本的链接在我的Android应用,这要么是电子邮件地址网页链接。我用下面的代码片段对它们进行设置(例如,用于web链接):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:linksClickableandroid:clickableandroid: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进行点击事件。

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