Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/183.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在android小部件中添加-在运行时删除视图_Android_View_Android Widget_Runtime - Fatal编程技术网

在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

我必须在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 = 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