我刚开始学习Android开发,已经创建了一个在主屏幕上显示一些信息的小部件。然而,我现在想在这个小部件上添加一个按钮,用来更新小部件中的文本视图。
有人可以指导我如何实现吗?
谢谢。
我刚开始学习Android开发,已经创建了一个在主屏幕上显示一些信息的小部件。然而,我现在想在这个小部件上添加一个按钮,用来更新小部件中的文本视图。
有人可以指导我如何实现吗?
谢谢。
已解决 - 我可以确认,如果您想要创建一个按钮来更新 Android AppWidget,则不需要 Activity。
我已成功实现了我的 AppWidgetProvider 类,使其在 AndroidManifest.xml 中使用 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 组件:
按钮在 appwidget 中是支持的,所以不确定问题出在哪里。 看一下这个例子,如何通过 views.setOnClickPendingIntent(R.id.YOURVIEW ID, yourIntent); 分配操作。
RemoteViews 对象(以及相应的 App Widget)可以支持以下布局类:
FrameLayout LinearLayout RelativeLayout
以及以下小部件类:
AnalogClock Button Chronometer ImageButton ImageView ProgressBar TextView 这些类的后代不受支持。