[英]How to obtain removeView for a given appWidgetId in onReceive
最近,我建立了我的窗口小部件UI,並在onUpdate
安裝了click事件處理程序。
我想知道,在onReceive
期間,對於給定的appWidgetId
,我訪問remoteView
的正確方法是什么? 正在將所有removeView
s存儲在本地成員映射中,例如
Map<appWidgetId, remoteView>
一個好主意? 還是有更好的方法?
import android.app.PendingIntent;
import android.appwidget.AppWidgetManager;
import android.appwidget.AppWidgetProvider;
import android.content.Context;
import android.content.Intent;
import android.widget.RemoteViews;
public class MyAppWidgetProvider extends AppWidgetProvider {
@Override
public void onUpdate(Context context, AppWidgetManager appWidgetManager, int[] appWidgetIds) {
for (int appWidgetId : appWidgetIds) {
RemoteViews remoteViews = new RemoteViews(context.getPackageName(), R.layout.widget_layout_inverse_holo_light);
// Register an onClickListener
Intent refreshIntent = new Intent(context, JStockAppWidgetProvider.class);
refreshIntent.setAction(REFRESH_ACTION);
refreshIntent.putExtra(AppWidgetManager.EXTRA_APPWIDGET_ID, appWidgetId);
PendingIntent refreshPendingIntent = PendingIntent.getBroadcast(context, 0, refreshIntent, PendingIntent.FLAG_UPDATE_CURRENT);
remoteViews.setOnClickPendingIntent(R.id.refresh_button, refreshPendingIntent);
appWidgetManager.updateAppWidget(appWidgetId, remoteViews);
}
}
@Override
public void onReceive(Context context, Intent intent) {
AppWidgetManager mgr = AppWidgetManager.getInstance(context);
if (intent.getAction().equals(REFRESH_ACTION)) {
int appWidgetId = intent.getIntExtra(AppWidgetManager.EXTRA_APPWIDGET_ID,
AppWidgetManager.INVALID_APPWIDGET_ID);
// How can I access my remoteView?
// During onUpdate, is saving all the remoteViews in local member
// Map<appWidgetId, remoteView> a good idea?
}
super.onReceive(context, intent);
}
private static final String REFRESH_ACTION = "org.yccheok.jstock.gui.widget.JStockAppWidgetProvider.REFRESH_ACTION";
}
如果要刷新小部件,只需創建一個新的RemoteView,然后調用
appWidgetManager.updateAppWidget
或者,如果您的小部件由某種CursorAdaptor支持,則應實現
RemoteViewsService.RemoteViewsFactory
對適配器的任何更改將自動更新小部件。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.