Android: View by id? (from Widget Provider)

一曲冷凌霜 提交于 2019-12-24 01:25:00

问题


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

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!