问题
I know only one way to get a view by id:
getViewById(R.drawable.imageButton)
But how am I supposed to get this imageButton if i don't have an activity (developing a widget application)
I am able to get a context. I suppose it is enough to get the view - context contains only one widget isn't it? And if not - then how to get each widget views ?
回答1:
For Widgets you have to work with RemoteViews, for example
RemoteViews updateViews = new RemoteViews(this.getPackageName(), R.layout.widget);
Here you can find a tutorial of how to use them
回答2:
Inside onReceive
AppWidgetManager mgr = AppWidgetManager.getInstance(context);
int[] appWidgetIds = mgr.getAppWidgetIds(new ComponentName(context, YourWidgetProvider.class));
RemoteViews rv = new RemoteViews(context.getPackageName(),R.layout.widget_layout);
rv.setImageViewResource(R.id.yourImageView, R.drawable.yourBitmap);
mgr.updateAppWidget(appWidgetIds, rv);
回答3:
There is no way you can get handle of ImageView. But you can use setImageViewBitmap or setImageViewResource or setImageViewUri from RemoteView class to set the bitmap of ImageView. http://developer.android.com/reference/android/widget/RemoteViews.html
来源:https://stackoverflow.com/questions/7528891/android-view-by-id-from-widget-provider