Android 在StackView小部件项内设置onClick事件
我有一个集合小部件(这很重要!)。看起来是这样的: 我的代码基于官方Android文档: 所以对于小部件,我在StackView集合中使用带有自定义对象的集合。此集合由StackRemoteViewsFactory(实现RemoteViewsService.RemoteViewsFactory)处理。 正如您所看到的,每个项目都有三个图像按钮和一个文本视图 我知道如何为整个RemoteView项目添加onClick行为。 官方文件对此进行了描述 但是我的每个视图(按钮和文本视图)都需要四个onClick行为 我的问题: 这是否可能在具有RemoteView集合的小部件中为每个StackView项单击不同的视图 现在我看不出有任何可能如何做到这一点:(Android 在StackView小部件项内设置onClick事件,android,android-widget,widget,onclick,stackview,Android,Android Widget,Widget,Onclick,Stackview,我有一个集合小部件(这很重要!)。看起来是这样的: 我的代码基于官方Android文档: 所以对于小部件,我在StackView集合中使用带有自定义对象的集合。此集合由StackRemoteViewsFactory(实现RemoteViewsService.RemoteViewsFactory)处理。 正如您所看到的,每个项目都有三个图像按钮和一个文本视图 我知道如何为整个RemoteView项目添加onClick行为。 官方文件对此进行了描述 但是我的每个视图(按钮和文本视图)都需要四个on
更新:
我想在onClicks上有一些类似于这个问题的东西:。但是这个问题的解决方案不适用于具有远程视图集合的小部件,因为小部件实现不同。如果您看过StackView小部件示例代码,您知道有提供者类和服务类。在服务类中,请尝试添加SetOnClickFillinContent到stackview布局的每个id,意图包括“命令字”。在提供程序类中,将SetPendingEntTemplate设置为示例代码。这是重要的一部分,在提供程序类中,有OnReceive()。SetPendingEntTemplate将发送意图,包括在提供程序类中设置的特定操作和“comman word”设置为服务类中layour的每个id。现在您知道用户从堆栈视图小部件中单击了哪个按钮。
如果您需要进一步的提示,请告诉我,我将添加示例代码。因此,基本上,您需要做两件事,将onClick行为添加到Android应用程序小部件中StackView/ListView的按钮中
RemoteViews rv = new RemoteViews(mContext.getPackageName(), R.layout.widget__fan);
Bundle extras = new Bundle();
extras.putInt(TestWidget.EXTRA_ITEM, position);
Intent fillInIntent = new Intent();
fillInIntent.putExtras(extras);
rv.setOnClickFillInIntent(R.id.fan_status, fillInIntent); // id of button you want to add a onClick function to.
public void onReceive(Context context, Intent intent) {
if (intent.getAction().equals(act1)) {
// Add your functionalities
}
}
RemoteViews rv = new RemoteViews(mContext.getPackageName(), R.layout.widget__fan);
Bundle extras = new Bundle();
extras.putInt(TestWidget.EXTRA_ITEM, position);
Intent fillInIntent = new Intent();
fillInIntent.putExtras(extras);
rv.setOnClickFillInIntent(R.id.fan_status, fillInIntent); // id of button you want to add a onClick function to.
public void onReceive(Context context, Intent intent) {
if (intent.getAction().equals(act1)) {
// Add your functionalities
}
}
对不起,你的英语很难理解。请提供一个示例代码。也许它会更简单。谢谢。@user1482049你能看看我的问题,告诉我我在代码中到底犯了什么错误吗?你得到你的答案了吗?因为我面临着同样的问题。你能看看我的问题吗?你解决过这个问题吗?我会很有帮助的如果您可以发布您的解决方案,请。