为什么在Android中两次调用ClickableSpan的onClick()方法?

内容来源于 Stack Overflow,并遵循CC BY-SA 3.0许可协议进行翻译与使用

  • 回答 (1)
  • 关注 (0)
  • 查看 (260)

onClick方法被调用两次,所以当从SecondActivity.class它会再次重新装载它,以下是我的代码:

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);
提问于
用户回答回答于

我有同样的问题,因为我有“Autolink:删除textContent.setMovementMethod(LinkMovementMethod.getInstance())这一点,就能解决了。

扫码关注云+社区

领取腾讯云代金券