[英]Android home screen widget not updating
我創建了一個簡單的主屏幕小部件,該小部件顯示從數據庫生成的名稱。 我添加了一個按鈕來刷新TextView中的名稱,但是問題是小部件沒有更新。
這是我的Widget類:
public class QuotesWidgets extends AppWidgetProvider {
ComponentName watchWidget;
RemoteViews remoteViews;
private static final String SYNC_CLICKED = "automaticWidgetSyncButtonClick";
void updateAppWidget(Context context, AppWidgetManager appWidgetManager,
int appWidgetId) {
Realm mRealm;
mRealm=Realm.getDefaultInstance();
Random random = new Random();
RealmResults<names> randomName = mRealm.where(Names.class).findAll();
Names name = randomName.get(random.nextInt(randomName.size()));
String name1 = quote.getName();
remoteViews = new RemoteViews(context.getPackageName(), R.layout.my_widget);
watchWidget = new ComponentName(context, MyWidget.class);
remoteViews.setTextViewText(R.id.textview, name);
remoteViews.setOnClickPendingIntent(R.id.refresh, getPendingSelfIntent(context, SYNC_CLICKED));
appWidgetManager.updateAppWidget(watchWidget, remoteViews);
}
@Override
public void onUpdate(Context context, AppWidgetManager appWidgetManager, int[] appWidgetIds) {
// There may be multiple widgets active, so update all of them
for (int appWidgetId : appWidgetIds) {
updateAppWidget(context, appWidgetManager, appWidgetId);
}
}
@Override
public void onReceive(Context context, Intent intent) {
super.onReceive(context, intent);
if (SYNC_CLICKED.equals(intent.getAction())) {
Realm mRealm;
mRealm=Realm.getDefaultInstance();
AppWidgetManager appWidgetManager = AppWidgetManager.getInstance(context);
remoteViews = new RemoteViews(context.getPackageName(), R.layout.quotes_widgets);
watchWidget = new ComponentName(context, MyWidgets.class);
appWidgetManager.updateAppWidget(watchWidget, remoteViews);
Random random = new Random();
RealmResults<names> randomName = mRealm.where(Names.class).findAll();
Names name = randomName.get(random.nextInt(randomName.size()));
String name1 = quote.getName();
Toast.makeText(context,name1, Toast.LENGTH_SHORT).show();
remoteViews.setTextViewText(R.id.textview, name1);
}
}
protected PendingIntent getPendingSelfIntent(Context context, String action) {
Intent intent = new Intent(context, getClass());
intent.setAction(action);
return PendingIntent.getBroadcast(context, 0, intent, 0);
}
}
在示例中,我使用了Toast消息,當我單擊按鈕時,Toast消息每次都以不同的名稱顯示,因此一切正常,除了小部件中的TextView有所更改。 問題是什么?
首先設置新文本:
remoteViews.setTextViewText(R.id.textview, name1);
然后讓AppWidgetManager
更新小部件:
appWidgetManager.updateAppWidget(watchWidget, remoteViews);
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.