我刚刚开始使用Android开发,我创建了一个漂亮的小部件,在我的主屏幕上显示一些信息。但是,我现在想要在我的小部件上实现一个按钮来更新我的小部件TextView中的信息。
有人可以建议怎么做吗?
由于
答案 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小部件:
答案 1 :(得分:4)
appwidget支持按钮,因此不确定问题是什么。 请看这个例子,了解如何通过views.setOnClickPendingIntent(R.id.YOURVIEW ID,yourIntent)分配动作;
RemoteViews对象(和, 因此,一个App Widget)可以 支持以下布局类:
FrameLayout LinearLayout RelativeLayout
以下 小部件类:
AnalogClock按钮计时器 ImageButton ImageView ProgressBar TextView这些类的后代 不受支持。