diff options
| author | Pierre Barbier de Reuille <pbdr@google.com> | 2021-03-18 09:07:28 +0000 |
|---|---|---|
| committer | Pierre Barbier de Reuille <pbdr@google.com> | 2021-03-18 09:07:28 +0000 |
| commit | 54deae4c6902cf405a29c30b86a65878a326f170 (patch) | |
| tree | 67e18a4c7ba61622b501d2bd8ceb1d4bd3c17fa7 /core/java/android/widget/RemoteViews.java | |
| parent | 3be701e7670519336bddfd9f2837c19556d76de9 (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.java | 6 |
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 |
