summaryrefslogtreecommitdiff
path: root/core/java/android/widget/RemoteViews.java
diff options
context:
space:
mode:
authorPierre Barbier de Reuille <pbdr@google.com>2021-03-18 09:07:28 +0000
committerPierre Barbier de Reuille <pbdr@google.com>2021-03-18 09:07:28 +0000
commit54deae4c6902cf405a29c30b86a65878a326f170 (patch)
tree67e18a4c7ba61622b501d2bd8ceb1d4bd3c17fa7 /core/java/android/widget/RemoteViews.java
parent3be701e7670519336bddfd9f2837c19556d76de9 (diff)
Ensure the view being recycled has been inflated before.
Fix: 183061275 Test: atest CtsWidgetTestCases:RemoteViewsTest Change-Id: I346fd894bea3ca37ab75871025fa0a92433d061c
Diffstat (limited to 'core/java/android/widget/RemoteViews.java')
-rw-r--r--core/java/android/widget/RemoteViews.java6
1 files changed, 5 insertions, 1 deletions
diff --git a/core/java/android/widget/RemoteViews.java b/core/java/android/widget/RemoteViews.java
index 0cedcea7b4d4..11ac7f2a5167 100644
--- a/core/java/android/widget/RemoteViews.java
+++ b/core/java/android/widget/RemoteViews.java
@@ -5339,9 +5339,13 @@ public class RemoteViews implements Parcelable, Filter {
/** @hide */
public boolean canRecycleView(View v) {
+ Integer previousLayout = (Integer) v.getTag(R.id.widget_frame);
+ if (previousLayout == null) {
+ return false;
+ }
Integer overrideIdTag = (Integer) v.getTag(R.id.remote_views_override_id);
int overrideId = overrideIdTag == null ? View.NO_ID : overrideIdTag;
- return (Integer) v.getTag(R.id.widget_frame) == getLayoutId() && mViewId == overrideId;
+ return previousLayout == getLayoutId() && mViewId == overrideId;
}
// Note: topLevel should be true only for calls on the topLevel RemoteViews, internal calls