我有一个小部件,用于在每次收到更新广播时更改其图标。但是,小部件永远无法正确显示其图标,显示文本“问题加载小部件”。Logcat 消息是:
WARN/AppWidgetHostView(612): updateAppWidget couldn't find any view, using error view
WARN/AppWidgetHostView(612): android.widget.RemoteViews$ActionException: can't find view: 0x7f060003
我的 onUpdate 的代码是:
public class ImageWidgetProvider extends AppWidgetProvider{
private static final String TAG = "Steve";
public static final int[] IMAGES = { R.drawable.ic_launcher_alarmclock,
/*and many more*/};
@Override
public void onUpdate(Context context, AppWidgetManager appWidgetManager, int[] appWidgetIds){
for (int appWidgetId : appWidgetIds) {
Log.d(TAG, "onUpdate:");
int imageNum = (new java.util.Random().nextInt(IMAGES.length));
Log.d(TAG, Integer.toString(IMAGES[imageNum]));
RemoteViews remoteView = new RemoteViews(context.getPackageName(), R.layout.widget);
remoteView.setImageViewResource(R.id.image_in_widget, IMAGES[imageNum]);
appWidgetManager.updateAppWidget(appWidgetId, remoteView);
}
}
}
现在,当我将鼠标悬停在“R.id.image_in_widget”上时,它会显示其值等于 0x7f060003 - 根据 Logcat 无法找到的视图。使用第二个 Log 语句,我验证了 IMAGES[imageNum] 确实引用了 IMAGES 数组中的随机图像。(如果它很重要,它会以十进制值而不是十六进制值出现。)任何想法我做错了什么?非常感谢!
--
编辑:这是小部件的布局文件,其中声明了 image_in_widget ImageView。
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="fill_parent">
<ImageView android:name="@+id/image_in_widget"
android:layout_width="wrap_content"
android:layout_height="wrap_content"/>
</LinearLayout>