diff options
| author | 2024-02-14 02:08:20 +0000 | |
|---|---|---|
| committer | 2024-02-17 02:55:09 +0000 | |
| commit | bcdd859fa7a50e480c2d3d2c86bcb175861a40dd (patch) | |
| tree | dfda0a88dd28b430d5d77673260717489c53d4df | |
| parent | f88941458e8d7d88b6160cf4dc6432396325ec35 (diff) | |
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
| -rw-r--r-- | core/java/android/widget/RemoteViews.java | 21 |
1 files 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; } |