Android的appwidget remoteviews没有更新 [英] Android appwidget remoteviews not updating
问题描述
列表远程视图没有更新(我的意思是刷新本身),当我更新一些活动部件。它配备直至应用程序窗口小部件的onupdate(日志显示出来)。但不进入的列表视图适配器与新鲜数据充气它
公共无效的OnUpdate(上下文的背景下,AppWidgetManager appWidgetManager,
INT [] appWidgetIds){
最终诠释N = appWidgetIds.length;
的for(int i = 0; I&n种;我++){
INT appWidgetId = appWidgetIds [I]
Log.e(称为,的onupdate);
RemoteViews意见=新RemoteViews(context.getPackageName()
R.layout.widget_lay);
views.setTextViewText(R.id.textView1,
浮动文字会显示在这里..每日思考);
意向意图=新的意图(背景下,RemoteServiceEmin.class);
intent.putExtra(AppWidgetManager.EXTRA_APPWIDGET_ID,appWidgetId);
views.setRemoteAdapter(R.id.gridview,意图);
//充气列表远程视图
意图intentlist =新的意图(背景下,ListInflater.class);
intentlist.putExtra(AppWidgetManager.EXTRA_APPWIDGET_ID,
appWidgetId);
intent.setData(Uri.parse(intent.toUri(Intent.URI_INTENT_SCHEME)));
views.setRemoteAdapter(R.id.listview,intentlist);
//在GridView控件设置的onclick
意图itemClickIntent =新的意图(背景下,MyWidgetProvider.class);
itemClickIntent.setAction(ITEM_CLICK_ACTION);
itemClickIntent.putExtra(AppWidgetManager.EXTRA_APPWIDGET_ID,
appWidgetIds [I]);
PendingIntent itemClickPendingIntent = PendingIntent.getBroadcast(
上下文,0,itemClickIntent,
PendingIntent.FLAG_UPDATE_CURRENT);
views.setPendingIntentTemplate(R.id.gridview,
itemClickPendingIntent);
appWidgetManager.updateAppWidget(appWidgetId,意见);
}
super.onUpdate(背景下,appWidgetManager,appWidgetIds);
}
所以,最后的完成,再次都要归功于developer.android.com。所有你需要做的就是,触发从那里你要处理更新广播意图。
意图initialUpdateIntent =新的意图(
AppWidgetManager.ACTION_APPWIDGET_UPDATE);
initialUpdateIntent
.setAction(AppWidgetManager.ACTION_APPWIDGET_UPDATE);
sendBroadcast(initialUpdateIntent);
,然后抓住它在Appwidget的onRecieve,以及使用更新的远程视窗
notifyAppWidgetViewDataChanged()。
有点像codesnippetbelow
否则,如果(intent.getAction()。等于(
AppWidgetManager.ACTION_APPWIDGET_UPDATE)){
AppWidgetManager appWidgetManager = AppWidgetManager.getInstance(上下文);
组件名thisAppWidget =新单元名(context.getPackageName(),MyWidgetProvider.class.getName());
INT [] appWidgetIds = appWidgetManager.getAppWidgetIds(thisAppWidget);
appWidgetManager.notifyAppWidgetViewDataChanged(appWidgetIds,R.id.listviewnew);
Log.e(最后一整天后,工作:);
}
list remote view is not updating (i mean refreshing itself) when i am updating the widget from some activity. It comes up till onUpdate of app widget (log showing up). but does not enter into adapter of list view to inflate it with fresh data .
public void onUpdate(Context context, AppWidgetManager appWidgetManager,
int[] appWidgetIds) {
final int N = appWidgetIds.length;
for (int i = 0; i < N; i++) {
int appWidgetId = appWidgetIds[i];
Log.e("called", "onupdate");
RemoteViews views = new RemoteViews(context.getPackageName(),
R.layout.widget_lay);
views.setTextViewText(R.id.textView1,
"Floating Text will be displayed here .. Daily Thoughts");
Intent intent = new Intent(context, RemoteServiceEmin.class);
intent.putExtra(AppWidgetManager.EXTRA_APPWIDGET_ID, appWidgetId);
views.setRemoteAdapter(R.id.gridview, intent);
// inflating list remote view
Intent intentlist = new Intent(context, ListInflater.class);
intentlist.putExtra(AppWidgetManager.EXTRA_APPWIDGET_ID,
appWidgetId);
intent.setData(Uri.parse(intent.toUri(Intent.URI_INTENT_SCHEME)));
views.setRemoteAdapter(R.id.listview, intentlist);
// setting onclick on gridview
Intent itemClickIntent = new Intent(context, MyWidgetProvider.class);
itemClickIntent.setAction(ITEM_CLICK_ACTION);
itemClickIntent.putExtra(AppWidgetManager.EXTRA_APPWIDGET_ID,
appWidgetIds[i]);
PendingIntent itemClickPendingIntent = PendingIntent.getBroadcast(
context, 0, itemClickIntent,
PendingIntent.FLAG_UPDATE_CURRENT);
views.setPendingIntentTemplate(R.id.gridview,
itemClickPendingIntent);
appWidgetManager.updateAppWidget(appWidgetId, views);
}
super.onUpdate(context, appWidgetManager, appWidgetIds);
}
So Finally its done and again all thanks to developer.android.com . All you need to do is , Trigger a broadcast intent from where you you want to handle "update " .
Intent initialUpdateIntent = new Intent(
AppWidgetManager.ACTION_APPWIDGET_UPDATE);
initialUpdateIntent
.setAction(AppWidgetManager.ACTION_APPWIDGET_UPDATE);
sendBroadcast(initialUpdateIntent);
and then catch it in onRecieve of Appwidget , and update the Remoteview using
notifyAppWidgetViewDataChanged().
Something like the codesnippetbelow
else if (intent.getAction().equals(
AppWidgetManager.ACTION_APPWIDGET_UPDATE)) {
AppWidgetManager appWidgetManager = AppWidgetManager.getInstance(context);
ComponentName thisAppWidget = new ComponentName(context.getPackageName(), MyWidgetProvider.class.getName());
int[] appWidgetIds = appWidgetManager.getAppWidgetIds(thisAppWidget);
appWidgetManager.notifyAppWidgetViewDataChanged(appWidgetIds, R.id.listviewnew);
Log.e("finally after a whole day", "working :");
}
这篇关于Android的appwidget remoteviews没有更新的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!