起因
做作业要在activity中更新widget的内容,但是,PDF又讲得不清不楚,自己瞎摸折腾很久,就很气。
解决
最后终于在StackOverfllow中找到了极其简洁的解决方案,就很开心。参考网站如下:
https://stackoverflow.com/questions/4073907/update-android-widget-from-activity
代码如下:
// 这段代码在写到Activity中
// 获取当前activity的上下文
Context contextToUpdateWidget = this;
// 获取AppWidgetManaget实例
AppWidgetManager appWidgetManager = AppWidgetManager.getInstance(context);
// 新建remoteView,第一个参数是上下文的包名,第二个参数是widget的布局文件
RemoteViews remoteViews = new RemoteViews(context.getPackageName(), R.layout.my_widget);
// 获取widget的java文件
ComponentName thisWidget = new ComponentName(context, myWidget.class);
// 通过RemoveView的接口,对widget布局的内部空间更新
// 更新 textView
remoteViews.setTextViewText(R.id.appwidget_text, goodToNotify.getName()+"仅售¥" + goodToNotify.getPrice()+"!");
//更新ImageViewRosource
remoteViews.setImageViewResource(R.id.appwidget_image, goodToNotify.getImageId());
// 通过appWidgetManaget对widget进行更新
appWidgetManager.updateAppWidget(thisWidget, remoteViews);
效果
本来是这样的,点击一下:
打开了mainActivity, 然后在mainActivivy中调用了上面所说的代码,对widget进行了更新