首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >为什么ClickableSpan的onClick()方法在安卓中会被调用两次

为什么ClickableSpan的onClick()方法在安卓中会被调用两次
EN

Stack Overflow用户
提问于 2016-07-14 15:50:41
回答 1查看 761关注 0票数 3

onClick方法被调用两次,因此当从SecondActivity.class返回时,它将再次重新加载它。我有一个名为postTextViewTextView,可以在其中单击See More

其中:R.string.readMore = See More

这是我用过的代码。

代码语言:javascript
复制
String mTitleBody = Html.fromHtml(postBodyText).toString().substring(0, 150).trim();

mTitleBody = mTitleBody.concat("..." + mContext.getResources().getString(R.string.readMore)).replaceAll("<img.+?>|<IMG.+?>", "").replaceAll("\n", "<br/>");
int index1 = Html.fromHtml(mTitleBody).toString().trim().length() -
        mContext.getResources().getString(R.string.readMore).length();
int index2 = Html.fromHtml(mTitleBody).toString().trim().length();

postTextView.setTextIsSelectable(true);
postTextView.setMovementMethod(LinkMovementMethod.getInstance());
postTextView.setText(Html.fromHtml(mTitleBody), TextView.BufferType.SPANNABLE);
Spannable mySpannable = (Spannable) postTextView.getText();
ClickableSpan myClickableSpan = new ClickableSpan() {
    @Override
    public void onClick(View view) {
      Log.d("FirstClass", "onClick");

      Intent intent = new Intent(mContext, SecondActivity.class);
      (mContext).startActivity(intent);
      ((Activity) mContext).overridePendingTransition(R.anim.slide_in_right, R.anim.slide_out_left);

    }

    @Override
    public void updateDrawState(TextPaint ds) {
      super.updateDrawState(ds);
      ds.setUnderlineText(false);
      ds.setColor(ContextCompat.getColor(mContext, R.color.body_text_3));
    }
};
mySpannable.setSpan(myClickableSpan, index1, index2, Spannable.SPAN_EXCLUSIVE_EXCLUSIVE);

有没有人能帮我一下,提前谢谢。

EN

回答 1

Stack Overflow用户

发布于 2018-06-15 03:41:44

我遇到了完全相同的问题,这是因为我在各自的视图中有"autolink: true“属性,删除它会有所帮助。

票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/38368463

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档