我正在制作一个应用程序小部件,但我遇到了点击事件的问题,当系统终止小部件的进程并稍后重新启动它时,该事件会丢失。屏幕旋转后也会发生这种情况。
针对 SDK 版本 7 构建并在模拟器 (2.1) 和具有 2.3.3 的真实设备上运行。
我的 onUpdate 方法:
public void onUpdate(Context context, AppWidgetManager appWidgetManager, int[] appWidgetIds) {
for (int wid : appWidgetIds) {
Log.i(TAG, "onUpdate widget #" + wid);
Intent intent = new Intent(context, MyClass.class);
intent.putExtra(AppWidgetManager.EXTRA_APPWIDGET_ID, wid);
PendingIntent clickIntent = PendingIntent.getActivity(context, 0, intent, PendingIntent.FLAG_UPDATE_CURRENT);
RemoteViews widget = new RemoteViews(context.getPackageName(), R.layout.widget);
widget.setOnClickPendingIntent(R.id.widget_layout, clickIntent);
appWidgetManager.updateAppWidget(wid, widget);
}
super.onUpdate(context, appWidgetManager, appWidgetIds);
}
其中 R.id.widget_layout 是 appwidget 的线性布局的 id。我尝试将此单击事件也添加到文本视图,但结果相同。
我与这个问题斗争了好几天,我发现有些人有同样的问题,但没有解决方案对我有用:(我也尝试了不同的待处理意图标志,但没有任何成功。
第二个问题是,当我在主屏幕上添加另一个 appwidget 时,它对点击事件没有反应。在 logcat 中,我看到来自 onUpdate 方法“onUpdate widget #xy”的消息,但 appwidget 对点击没有反应。只有放置在主屏幕上的第一个 appwidget 会对点击做出反应,但只会持续一段时间。有任何想法吗?