起因
做作業要在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進行了更新