Android小部件视图不会清除刷新内容

时间:2014-03-02 00:48:44

标签: java android android-4.3-jelly-bean

我正在构建一个Android小部件,并且布局文件将在父布局中包含n次,具体取决于可用的数据量。

例如,如果有3个数据可用,我按如下方式构建小部件:

widget.xml
   status_layout.xml
   status_layout.xml
   status_layout.xml

要包含status_layout.xml个视图,我会从小部件的更新服务中执行以下操作:

RemoteViews views = new RemoteViews(context.getPackageName(), R.layout.widget);
RemoteViews childView = new RemoteViews(context.getPackageName(), R.layout.status_layout);
 childView.setTextViewText(R.id.platform, 
         "Test text goes here \n " + new Random().nextInt());
views.addView(R.id.layout, childView);

这在第一次调用时工作正常,但后续更新会在现有视图的顶部绘制,而不是替换它。这使得文本不可读。

额外代码

尝试清除现有视图:

RemoteViews views = new RemoteViews(context.getPackageName(), R.layout.widget);
views.removeAllViews(R.layout.widget); // doesn't work
views.removeAllViews(R.layout.status_layout); // doesn't work

单击按钮时触发刷新:

int[] ids = AppWidgetManager.getInstance(context).getAppWidgetIds(new ComponentName(context, MyWidgetProvider.class));
Intent refreshIntent = new Intent(context, MyWidgetProvider.class);
refreshIntent.setAction(AppWidgetManager.ACTION_APPWIDGET_UPDATE);
refreshIntent.putExtra(AppWidgetManager.EXTRA_APPWIDGET_IDS, ids);
PendingIntent pendingIntent = PendingIntent.getBroadcast(context, 0, refreshIntent, PendingIntent.FLAG_UPDATE_CURRENT);
views.setOnClickPendingIntent(R.id.refresh, pendingIntent);

我已经尝试了很多但是弄不清楚为什么 - 任何帮助都会非常感激。

0 个答案:

没有答案