From 6f406199aade5acd816ff47d8146358d0df3eba8 Mon Sep 17 00:00:00 2001 From: Edgar Wang Date: Tue, 24 Aug 2021 02:04:49 +0800 Subject: [PATCH] Fix link number increasing in the TalkBack menu. This caused by we add new URLSpan everytime when onBindViewHolder called. Bug: 195946803 Test: manual Change-Id: Ic4272df327d8ad7758bcfbf2d194e6bc60881f0f (cherry picked from commit 45baaa0f405b7d84a3ec1e2a742f4e718c8f2899) --- .../com/android/settingslib/widget/FooterPreference.java | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/packages/SettingsLib/FooterPreference/src/com/android/settingslib/widget/FooterPreference.java b/packages/SettingsLib/FooterPreference/src/com/android/settingslib/widget/FooterPreference.java index 8216edf872f30..fe7988f7e500f 100644 --- a/packages/SettingsLib/FooterPreference/src/com/android/settingslib/widget/FooterPreference.java +++ b/packages/SettingsLib/FooterPreference/src/com/android/settingslib/widget/FooterPreference.java @@ -43,6 +43,7 @@ public class FooterPreference extends Preference { View.OnClickListener mLearnMoreListener; private CharSequence mContentDescription; private CharSequence mLearnMoreContentDescription; + private FooterLearnMoreSpan mLearnMoreSpan; public FooterPreference(Context context, AttributeSet attrs) { super(context, attrs, R.attr.footerPreferenceStyle); @@ -68,7 +69,11 @@ public class FooterPreference extends Preference { if (learnMore != null && mLearnMoreListener != null) { learnMore.setVisibility(View.VISIBLE); SpannableString learnMoreText = new SpannableString(learnMore.getText()); - learnMoreText.setSpan(new FooterLearnMoreSpan(mLearnMoreListener), 0, + if (mLearnMoreSpan != null) { + learnMoreText.removeSpan(mLearnMoreSpan); + } + mLearnMoreSpan = new FooterLearnMoreSpan(mLearnMoreListener); + learnMoreText.setSpan(mLearnMoreSpan, 0, learnMoreText.length(), 0); learnMore.setText(learnMoreText); if (!TextUtils.isEmpty(mLearnMoreContentDescription)) {