【发布时间】:2011-05-17 11:39:27
【问题描述】:
我正在开发一个 android 小部件,它在 API 级别 5 或更高级别中运行良好。 API 级别 1 或 2 根本不支持它。它在 3 和 4 中应该可以正常工作,但由于某种原因,小部件不会更新。
onUpdate 方法被调用并正确执行;但是,在 3 和 4 中,它不会更改小部件的文本。我几乎不知所措。有什么想法吗?
@Override
public void onUpdate(Context context, AppWidgetManager appWidgetManager, int[] appWidgetIds) {
RemoteViews views = new RemoteViews(context.getPackageName(), R.layout.widget);
DataAccess helper = new DataAccess(context);
String text = helper.getCurrentText();
helper.close();
if (text != null)
views.setTextViewText(R.id.widget_text, text);
Intent intent = new Intent(context, WidgetDetailsActivity.class);
PendingIntent pending = PendingIntent.getActivity(context, 0, intent, 0);
views.setOnClickPendingIntent(R.id.widget, pending);
appWidgetManager.updateAppWidget(appWidgetIds, views);
}
【问题讨论】:
-
你调试过小部件吗?你得到预期的文本了吗?待处理的意图是否有效?是否执行了 onUpdate?
-
是的,我附加了调试器,除了文本更改外,一切正常。我可以更改颜色、大小、行为以及所有这些,但我无法更改文本。我已经很久没有在 1.5 或 1.6 中尝试过了,因为那个版本越来越过时了。
-
奇怪。我有适用于 1.5+ 的小部件,并且更新文本没有任何问题。
-
尝试添加一些日志,看看发生了什么。调试器可能会使用小部件进行欺骗。它应该在 1.5+ 上正常工作。你多久更新一次?
-
我收回我之前的评论。似乎没有针对小部件执行任何远程视图命令。没有错误或日志语句伴随它。它只是失败了。我在修改首选项时更新命令,然后每隔几个小时更新一次。我可能会拼凑一个快速测试小部件,看看我是否可以取出一些混淆变量。
标签: java android android-widget android-appwidget