Android小部件:如何确定单击了哪个按钮?
Posted
技术标签:
【中文标题】Android小部件:如何确定单击了哪个按钮?【英文标题】:Android widget:how to determine which button was clicked? 【发布时间】:2012-01-11 06:29:16 【问题描述】:我的小部件有几个 ImageButtons,为它们设置 onClicked 事件,我使用 PendingIntent:
Intent intent = new Intent(context, UpdateService.class);
PendingIntent pendingIntent = PendingIntent.getService(context, 0, intent, 0);
RemoteViews remoteViews = new RemoteViews(context.getPackageName(), R.layout.main);
remoteViews.setOnClickPendingIntent(R.id.Button1, pendingIntent);
如果我只想对所有按钮使用一个 PendingIntent 和 Service,我如何确定单击了哪个按钮? 谢谢你!
【问题讨论】:
Wayne,我们需要完整的代码。这段代码对按钮没有多说…… 我认为这就足够了 :-?,所有按钮都在 xml 文件中声明。我可以通过使用具有不同意图和服务的 remoteview.setOnClickPendingIntent 为每个按钮设置 onclicked 事件,它效率不高,所以我只想使用一个服务,但我不知道单击了哪个按钮。 【参考方案1】:我不明白你为什么只想使用一个PendingIntent。答案是为每次点击创建多个意图。最简单的方法是给每个Intent 一个特殊的动作。这样,您可以在收到意图时区分点击事件。
【讨论】:
我的意思是我只想实现一个Service,而不是一个Intent。也许我找到了解决方案。我将使用许多意图和一项服务。要确定单击了哪个按钮,我将使用 putExtras。谢谢你!【参考方案2】:如何确定点击了哪个按钮?谢谢你!
这个怎么样?我将此代码添加到我的 MainActivity.java 文件中。我的 activity_main.xml 有各种按钮,根据您按哪个按钮,它会将您带到特定网站。我不想多次重复 openWebSite() 函数,所以我尝试了 v.getID() ,它为按下的按钮返回一个唯一值。我将使用这个唯一号码访问正确的网站。
public void openWebSite(View v)
if (v.getId()==2131230722)
String url = "https://www.facebook.com/pages/Emily-Otnes/110931118993282";
Intent i = new Intent(Intent.ACTION_VIEW);
i.setData(Uri.parse(url));
startActivity(i);
Log.e("test", String.valueOf(v.getId()));
【讨论】:
以上是关于Android小部件:如何确定单击了哪个按钮?的主要内容,如果未能解决你的问题,请参考以下文章