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小部件:如何确定单击了哪个按钮?的主要内容,如果未能解决你的问题,请参考以下文章

如何在android小部件中单击图像按钮显示吐司

android小部件的按钮单击事件

Android确定单击哪个按钮以启动活动

Android 小部件按钮 Onclick Toast 消息

单击android小部件按钮上的侦听器

Android:单击小部件中的按钮时接收自定义广播