在我的广播接收器中,它同时也是一个小部件。当我在安装后第一次添加小部件时,它不可单击。我添加的第二个小部件是可点击的。虽然第一个小部件仍然不可点击。
此错误发生在模拟器中测试不同版本时。我手头没有其他设备,我可以一直重置。对于测试,我总是从"擦除用户数据"开始,以确保它是全新安装。
它确实适用于 1.6,但不适用于 2.x
我的首选项屏幕是一个手动独立活动,必须单独启动。
如果您需要更多信息,请告诉我。
这是我使它可点击的代码:
@Override
public void onUpdate(Context context, AppWidgetManager appWidgetManager, int[] appWidgetIds) {
super.onUpdate(context, appWidgetManager, appWidgetIds);
Log.d(LOG_TAG, "Update");
for (int id : appWidgetIds) {
Intent intent = new Intent(ACTION);
PendingIntent pendingIntent = PendingIntent.getBroadcast(context, 0, intent, 0);
//make widget clickable
RemoteViews remoteViews = new RemoteViews(context.getPackageName(), R.layout.main);
remoteViews.setOnClickPendingIntent(R.id.imageview, pendingIntent);
appWidgetManager.updateAppWidget(id, remoteViews);
}
}
这是一个很长的镜头 - 在PendingIntent
实例之间更改PendingIntent.getBroadcast
中的请求代码;我认为我的一个小部件之一遇到了同样的问题,此更改已解决。
我发现了错误。
这是安卓模拟器别名AVD中的一个错误。该死的东西。希望这有助于其他人不要在不存在的错误上浪费太多时间。
http://code.google.com/p/android/issues/detail?id=8889
错误 ID 8889 "appWidgetManager.updateAppWidget 不更新 2.0、2.1 下的新 AVD 上的小部件"
解决方法是在从擦除用户数据开始后(我为此禁用了保存到快照 - 未启用测试)。比退出。而不是在没有擦除的情况下重新开始。其他写的你可以使用ctrl + F11两次切换到横向模式并返回。