summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
author Pinyao Ting <pinyaoting@google.com> 2024-02-14 02:08:20 +0000
committer Pinyao Ting <pinyaoting@google.com> 2024-02-17 02:55:09 +0000
commitbcdd859fa7a50e480c2d3d2c86bcb175861a40dd (patch)
treedfda0a88dd28b430d5d77673260717489c53d4df
parentf88941458e8d7d88b6160cf4dc6432396325ec35 (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.java21
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;
}