如何在Android Widget上实现Button

时间:2010-01-17 22:56:09

标签: android widget

我刚刚开始使用Android开发,我创建了一个漂亮的小部件,在我的主屏幕上显示一些信息。但是,我现在想要在我的小部件上实现一个按钮来更新我的小部件TextView中的信息。

有人可以建议怎么做吗?

由于

2 个答案:

答案 0 :(得分:23)

已解决 - 如果您想创建一个按钮来更新Android AppWidget,我可以确认不需要活动。

我已经能够实现我的AppWidgetProvider类,以便它在AndroidManifest.xml中向Broadcast接收器注册一个android.appwidget.action.APPWIDGET_UPDATE intent-filter,然后在AppWidgetProvider类中触发onUpdate事件(在然后运行UpdateService)。

<!-- Broadcast Receiver that will process AppWidget updates -->
<receiver android:name=".MyWidget" android:label="@string/widget_name">
   <intent-filter>
      <action android:name="android.appwidget.action.APPWIDGET_UPDATE" />
   </intent-filter>
   <meta-data android:name="android.appwidget.provider" android:resource="@xml/widget" />
</receiver>

我的AppWidgetProvider类中的UpdateService然后使用onHandleIntent来运行私有buildUpdate方法 - 通过调用setOnClickPendingIntent来注册onClick事件,如下所示:

// set intent and register onclick
Intent i = new Intent(this, MyWidget.class);
PendingIntent pi = PendingIntent.getBroadcast(context,0, i,0);
updateViews.setOnClickPendingIntent(R.id.update_button,pi);

这是一个工作示例的一些源代码的链接,它显示了如何使用更新按钮来更新Twitter小部件:

https://github.com/commonsguy/cw-advandroid/tree/b01438e7f0fed8f795ddec4be43066905f03d0cc/AppWidget/TwitterWidget

答案 1 :(得分:4)

appwidget支持按钮,因此不确定问题是什么。 请看这个例子,了解如何通过views.setOnClickPendingIntent(R.id.YOURVIEW ID,yourIntent)分配动作;

  

RemoteViews对象(和,   因此,一个App Widget)可以   支持以下布局类:

     

FrameLayout LinearLayout   RelativeLayout

     

以下   小部件类:

     

AnalogClock按钮计时器   ImageButton ImageView ProgressBar   TextView这些类的后代   不受支持。