私は、ContentProviderのListViewにいくつかのデータを表示するAppWidgetを作成しましたが、更新するのに問題があります。最初にウィジェットを作成すると正しくポピュレートされますが、AlarmManagerのPendingIntentが到着した後、ListViewで更新は行われません。 - 私はLog.d呼び出しからの出力を参照してください - しかしonDataSetChangedへの呼び出し()ではありませんandroid appwidget listviewが更新されない
Intent update = new Intent(context, MenuWidgetProvider.class);
update.setAction(AppWidgetManager.ACTION_APPWIDGET_UPDATE);
update.putExtra(AppWidgetManager.EXTRA_APPWIDGET_IDS, appWidgetIds);
PendingIntent pIUpdate = PendingIntent.getBroadcast(context, 0, update, 0);
((AlarmManager) context.getSystemService(Context.ALARM_SERVICE)).
set(AlarmManager.RTC, nextTime.toMillis(false), pIUpdate);
Log.d(TAG, "updating: " + dmt.mealName);
for (int i = 0; i < appWidgetIds.length; ++i) {
int widgetId = appWidgetIds[i];
RemoteViews views = new RemoteViews(context.getPackageName(), R.layout.widget_menu);
// meal name
views.setTextViewText(R.id.widget_locname, prefs.getString(PREF_WIDGET_LOCNAME, ""));
// adapter
Intent adapter = new Intent(context, MenuWidgetAdapterService.class);
adapter.putExtra(EXTRA_LOCATIONID, prefs.getInt(PREF_WIDGET_LOCID, -1));
adapter.putExtra(EXTRA_MEALNAME, dmt.mealName);
adapter.putExtra(EXTRA_DATE, dmt.date.toString());
views.setRemoteAdapter(R.id.widget_list, adapter);
// update
manager.updateAppWidget(widgetId, views);
}
super.onUpdate(context, manager, appWidgetIds);
奇妙なことがあり、更新が発生したとき、にonUpdate()メソッドが実行されます。ここでは、コードです私のRemoteViewsFactory。 notifyAppWidgetViewDataChangedを呼び出しても、何の効果もありません。
ありがとう!これは私のために働いた。 – buntwoi
この手法は機能しますが、メモリプロファイルのウィジェットではメモリ消費量が増えます。私はデバッグ/プロファイリングの目的で1分間隔でアラームを設定しました。 –
この問題は私を壁の上に追いやってしまった。あなたは私の一日を救った。どのようにしてこの解決策に出会ったのですか?ちょっと興味があるんだけど。 Prateekに感謝します。 –