- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
<分区>
我正在构建一个小部件来加载每个食谱的配料列表。我的目标是能够拥有多个小部件实例,并独立加载/更新它们的成分列表 (ListView)。我已经为用户设置了一个配置 Activity 来选择食谱。在配置和填充 remoteViews 并为我的成分列表制作 RemoteAdapter 之后,该方法将始终调用:
appWidgetManager.updateAppWidget(mAppWidgetId, views);
appWidgetManager.notifyAppWidgetViewDataChanged(mAppWidgetId, R.id.widget_list_view_layout);
updateAppWidget 很好地更新了非 Collection View ,但是,我对我的 Collection View (成分列表)的 notifyAppWidgetViewDataChanged() 感到不满。
我第一次将小部件添加到屏幕(recipeId 4)时,它正确加载并调用正确的服务和 View 工厂来填充远程 listView。但是如果我添加第二个,会发生以下情况(或没有发生):
D/WidgetUtils: createAppWidgetResult() with appWidgetId: 78, recipeId: 4
D/WidgetUtils: RecipeId of the ingredients passed: 4
D/WidgetRemoteViewService: onGetViewFactory() call received with mRecipeId 4
D/WidgetRemoteViewsFactory: WidgetRemoteViewsFactory() constructed with recipeId: 4
D/WidgetRemoteViewsFactory: onDataSetChanged() called
D/WidgetUtils: createAppWidgetResult() with appWidgetId: 79, recipeId: 1
D/WidgetUtils: RecipeId of the ingredients passed: 1
D/WidgetUtils: createAppWidgetResult() with appWidgetId: 80, recipeId: 2
D/WidgetUtils: RecipeId of the ingredients passed: 2
日志结束
如果食谱 ID 为 1
,我期待以下结果D/WidgetRemoteViewService: onGetViewFactory() call received with mRecipeId **1**
D/WidgetRemoteViewsFactory: WidgetRemoteViewsFactory() constructed with recipeId: **1**
D/WidgetRemoteViewsFactory: onDataSetChanged() called
但是正如您从上面的日志中看到的那样,在 1 之后没有任何反应(与 4 不同,这是预期的行为)
在 UI 方面,任何随后创建的小部件的 ListView 实际上都包含配方 4(而不是 1)的成分,即使配置 Activity 明确将 id 传递为 1...2...6..等。
足够奇怪了:只有在我从主屏幕上删除所有小部件,然后添加一个小部件(例如食谱 ID 1)之后,它的 onDataSetChanged() 才会被调用?!,然后再次,任何后续的小部件都不会被调用。
查看屏幕截图 Nutella Pie Recipe 的 id 是 4,而 Brownies Recipe 的 id 是 1。首先添加 Nutella Pie 小部件,正确加载 Nutella Pie 的成分。第二个添加布朗尼,如您所见,成分是从第一个中继承下来的,但它们是不正确的。
在模拟器和真实设备上测试 > API 21,结果相同。
这个问题在这里已经有了答案: onGetViewFactory only called once for multiple widgets (3 个答案) 关闭 5 年前。 我正在构建一个小部件来加
我是一名优秀的程序员,十分优秀!