在android小部件中添加-在运行时删除视图
我必须在android小部件中删除/添加一个布局,点击按钮(按钮在小部件上) 这是我的密码在android小部件中添加-在运行时删除视图,android,view,android-widget,runtime,Android,View,Android Widget,Runtime,我必须在android小部件中删除/添加一个布局,点击按钮(按钮在小部件上) 这是我的密码 @Override public void onUpdate(Context context, AppWidgetManager appWidgetManager, int[] appWidgetIds) { // There may be multiple widgets active, so update all of them final int N
@Override
public void onUpdate(Context context, AppWidgetManager appWidgetManager, int[] appWidgetIds) {
// There may be multiple widgets active, so update all of them
final int N = appWidgetIds.length;
for (int i = 0; i < N; i++) {
updateAppWidget(context, appWidgetManager, appWidgetIds[i]);
}
}
@Override
public void onReceive(Context context, Intent intent) {
super.onReceive(context, intent);
if(intent.getAction().equals(ACTION_HIDE_BALANCE)) {
// CODE TO CHANGE WIDGET UI
}
}
static void updateAppWidget(Context context, AppWidgetManager appWidgetManager, int appWidgetId) {
CharSequence widgetText = context.getString(R.string.appwidget_text);
// Construct the RemoteViews object
RemoteViews views = new RemoteViews(context.getPackageName(), R.layout.widget);
Intent intent;
intent = new Intent(ACTION_HIDE_BALANCE);
PendingIntent hideBalancePendingIntent = PendingIntent.getBroadcast(context, 0, intent, PendingIntent.FLAG_UPDATE_CURRENT);
views.setOnClickPendingIntent(R.id.action_wallet_hide_balance, hideBalancePendingIntent);
intent = new Intent(ACTION_SHOW_BALANCE);
PendingIntent showBalancePendingIntent = PendingIntent.getBroadcast(context, 0, intent, PendingIntent.FLAG_UPDATE_CURRENT);
views.setOnClickPendingIntent(R.id.action_wallet_show_balance, showBalancePendingIntent);
// Instruct the widget manager to update the widget
appWidgetManager.updateAppWidget(appWidgetId, views);
}
}
@覆盖
公共void onUpdate(上下文上下文,AppWidgetManager AppWidgetManager,int[]AppWidgetId){
//可能有多个窗口小部件处于活动状态,因此请更新所有窗口小部件
final int N=appWidgetIds.length;
对于(int i=0;i
在互联网上搜索时,我发现PendingEvent技术具有onClickListener效果(已经在我的清单中添加了意图过滤器)
问题在于onRecieve()回调:如何更改小部件UI?
我必须删除一个类似于rootView.removeView(layoutView)的布局
提前感谢。好的,我发现这几乎和标准视图一样简单
@Override
public void onReceive(Context context, Intent intent) {
AppWidgetManager appWidgetManager = AppWidgetManager.getInstance(context);
int appWidgetId = 0;
if(intent.getAction().equals(ACTION_HIDE_BALANCE)) {
RemoteViews views = new RemoteViews(context.getPackageName(), R.layout.root_view);
views.removeAllViews(R.id.view_to_remove);
appWidgetId = intent.getExtras().getInt(AppWidgetManager.EXTRA_APPWIDGET_ID);
appWidgetManager.updateAppWidget(appWidgetId, views);
}
super.onReceive(context, intent);
}
显然,必须将AppWidgetManager.EXTRA_APPWIDGET_ID EXTRA附加到onClick pendingent