Fixes ContextMenuListener not being removed if copying is not enabled
This caused issues when reusing viewholders that previously had a
ContextMenuListener set.
Bug: b/123572344
Test: Manually verified
Change-Id: I8577da741f913f4ac97f6b1fdc272326c6e2dd6e
diff --git a/preference/src/main/java/androidx/preference/Preference.java b/preference/src/main/java/androidx/preference/Preference.java
index cfa8b4e..930508b 100644
--- a/preference/src/main/java/androidx/preference/Preference.java
+++ b/preference/src/main/java/androidx/preference/Preference.java
@@ -572,12 +572,10 @@
holder.setDividerAllowedAbove(mAllowDividerAbove);
holder.setDividerAllowedBelow(mAllowDividerBelow);
- if (isCopyingEnabled()) {
- if (mOnCopyListener == null) {
- mOnCopyListener = new OnPreferenceCopyListener(this);
- }
- holder.itemView.setOnCreateContextMenuListener(mOnCopyListener);
+ if (isCopyingEnabled() && mOnCopyListener == null) {
+ mOnCopyListener = new OnPreferenceCopyListener(this);
}
+ holder.itemView.setOnCreateContextMenuListener(isCopyingEnabled() ? mOnCopyListener : null);
}
/**