大佬教程收集整理的这篇文章主要介绍了android – onGetViewFactory只为多个小部件调用一次,大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。
public class AppWidgetservice extends RemoteViewsservice { @Override public RemoteViewsFactory onGetViewFactory(Intent intent) { return (new AppWidgetListFactory(this.getApplicationContext(),intent)); } }
在我的appwidgetprovider中,我为窗口小部件的每个实例调用以下方法(对于每个appWidgetId):
private static void fillInList(RemoteViews widget,Context context,int appWidgetId) { Intent intent = new Intent(context,AppWidgetservice.class); intent.putExtra(AppWidgetManager.EXTRA_APPWIDGET_ID,appWidgetId); widget.setRemoteAdapter(R.id.appwidget_listview,intent); }
AppWidgetListFactory的构造函数
public AppWidgetListFactory(Context context,Intent intent) { this.context = context; appWidgetId = intent.getIntextra(AppWidgetManager.EXTRA_APPWIDGET_ID,AppWidgetManager.INVALID_APPWIDGET_ID); System.out.println("New TVAPWLF for: " + appWidgetId); Trains = WidgetData.geTinstance().widgetMap.get(appWidgetId); }
现在的问题是,fillInList方法的调用与窗口小部件的实例一样频繁,但onGetViewFactory方法只能被调用一次.这导致所有的小部件显示相同的数据.
如何解决这个问题?
我建议通过Intent的数据传递你需要的信息(widget id?),也可以这样:
private static void fillInList(RemoteViews widget,AppWidgetservice.class); intent.setData(Uri.fromParts("content",String.valueOf(appWidgetId),null)); widget.setRemoteAdapter(R.id.appwidget_listview,intent); }
并分别在接收侧:
public TreinVerkeerAppWidgetListFactory(Context context,Intent intent) { this.context = context; appWidgetId = Integer.valueOf(intent.getData().getscheR_463_11845@eSpecificPart()); System.out.println("New TVAPWLF for: " + appWidgetId); Trains = WidgetData.geTinstance().widgetMap.get(appWidgetId); }
以上是大佬教程为你收集整理的android – onGetViewFactory只为多个小部件调用一次全部内容,希望文章能够帮你解决android – onGetViewFactory只为多个小部件调用一次所遇到的程序开发问题。
如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。
本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。