android - 在 StackView 小部件项目中设置 onClick 事件

标签 android android-widget widget onclick stackview

我有一个带有集合的小部件(这很重要!)。它看起来像这样:

Android widget screenshot

我的代码基于官方 Android 文档:Android App Widgets .

所以对于小部件,我在 StackView 集合中使用带有自定义对象的集合。此集合由 StackRemoteViewsFactory(实现 RemoteViewsService.RemoteViewsFactory)处理。 如您所见,每个项目都有三个 ImageButton 和一个 TextView。

我知道如何为整个 RemoteView 项目添加 onClick 行为。 这在官方文档中有描述。

但我的每个 View (按钮和 TextView )都需要四个 onClick 行为。

我的问题: 对于带有 RemoteView 集合的小部件中的每个 StackView 项目,是否可以对点击有不同的看法?

现在我看不出有任何可能性如何做到这一点 :(


更新:

我想在这个问题中使用 onClicks 进行类似操作:Processing more than one button click at Android Widget .但是由于小部件实现的差异,该问题的解决方案不适用于具有 RemoteViews 集合的小部件。

最佳答案

如果您看过 StackView 小部件示例代码,您就会知道有提供者类和服务类。在服务类中,尝试将 setOnClickFillInIntent 添加到 stackview 布局的每个 ID 中,Intent 包括“命令词”。并在提供程序类中将 setPendingIntentTemplate 设置为示例代码。这是重要的部分,在提供者类中,有 OnReceive()。 setPendingIntentTemplate 将发送 Intent,包括您在 Provider 类中设置的特定操作和服务类中为每个 layour id 设置的“comman word”。那么现在您知道用户从 Stack View 小部件中单击了哪个按钮。 如果您需要进一步的提示,请告诉我我会添加示例代码。

关于android - 在 StackView 小部件项目中设置 onClick 事件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11613022/

相关文章:

android - 防止应用程序在 Root设备上被杀死

android - Facebook SDK for Unity on Android - 关于 FB.Login 回调的问题

android - 广播接收器没有收到额外的东西

android - 更改大小 : Android Radio Button

android - appWidgetIds 只包含一个 id

android - 为什么我的应用会请求我没有请求的权限?

安卓界面问题

flutter - 如何在 Flutter 中的小部件树中将新 MaterialPageRoute 作为子项打开

java - 小部件的 runOnUiThread 方法模拟?

Android 小部件 Canvas - java.lang.IllegalArgumentException