From bcdd859fa7a50e480c2d3d2c86bcb175861a40dd Mon Sep 17 00:00:00 2001 From: Pinyao Ting Date: Wed, 14 Feb 2024 02:08:20 +0000 Subject: Fix actions for player integration in RemoteViews Click handlers needs to be re-added each time a new document was passed to the player. Bug: 26162947 Test: atest RemoteViewsTest Change-Id: Ib4e0f5d117554b71e5751a345034380f796ae303 --- core/java/android/widget/RemoteViews.java | 21 ++++++++++----------- 1 file changed, 10 insertions(+), 11 deletions(-) diff --git a/core/java/android/widget/RemoteViews.java b/core/java/android/widget/RemoteViews.java index 13dc4efb374d..0e5747d0e445 100644 --- a/core/java/android/widget/RemoteViews.java +++ b/core/java/android/widget/RemoteViews.java @@ -3874,7 +3874,7 @@ public class RemoteViews implements Parcelable, Filter { } } - private static class SetDrawInstructionAction extends Action { + private class SetDrawInstructionAction extends Action { @Nullable private final DrawInstructions mInstructions; @@ -3909,6 +3909,15 @@ public class RemoteViews implements Parcelable, Filter { } try (ByteArrayInputStream is = new ByteArrayInputStream(bytes.get(0))) { player.setDocument(new RemoteComposeDocument(is)); + player.addClickListener((viewId, metadata) -> { + mActions.forEach(action -> { + if (viewId == action.mViewId + && action instanceof SetOnClickResponse setOnClickResponse) { + setOnClickResponse.mResponse.handleViewInteraction( + player, params.handler); + } + }); + }); } catch (IOException e) { Log.e(LOG_TAG, "Failed to render draw instructions", e); } @@ -6051,16 +6060,6 @@ public class RemoteViews implements Parcelable, Filter { RemoteViews rvToApply = getRemoteViewsToApply(context, size); View result = inflateView(context, rvToApply, directParent, params.applyThemeResId, params.colorResources); - if (result instanceof RemoteComposePlayer player) { - player.addClickListener((viewId, metadata) -> { - mActions.forEach(action -> { - if (viewId == action.mViewId - && action instanceof SetOnClickResponse setOnClickResponse) { - setOnClickResponse.mResponse.handleViewInteraction(player, params.handler); - } - }); - }); - } rvToApply.performApply(result, rootParent, params); return result; } -- cgit v1.2.3-59-g8ed1b