0

在我的 Broadcastreceiver 中,它同时是一个小部件。在我安装后第一次添加小部件时,它不可点击。我添加的第二个小部件是可点击的。虽然第一个小部件仍然不可点击。

在模拟器中测试不同版本时发生此错误。我手头没有其他设备,我可以一直重置。对于测试,我总是从“擦除用户数据”开始,以确保它是全新安装。

它适用于 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);
    }
}
4

2 回答 2

0

这是一个长镜头 - 在实例PendingIntent.getBroadcast之间更改请求代码;PendingIntent我认为我的一个小部件也遇到了同样的问题,而这一变化已经解决了。

于 2012-05-13T10:37:45.370 回答
0

我发现了错误。

这是 android 模拟器别名 AVD 中的一个错误。该死的东西。希望这可以帮助其他人不要在不存在的错误上浪费太多时间。

http://code.google.com/p/android/issues/detail?id=8889

错误 id 8889 “appWidgetManager.updateAppWidget 未更新 2.0、2.1 以下新 AVD 上的小部件”

一种解决方法是在开始擦除用户数据之后(我为此禁用了保存到快照 - 未启用测试)。比退出。比不擦就重新开始。其他人写道,您可以使用 ctrl+F11 两次更改为横向模式并返回。

于 2012-05-13T12:20:29.953 回答