2014-03-04 50 views
0

我必须删除/添加按钮单击(该按钮上的小部件)上的一个Android小部件的布局。添加 - 删除视图在运行时在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); 
    } 
} 

搜索互联网上我发现的PendingIntent技术有onClickListener效果(已加在我的清单中的意图过滤器)。

问题出在onRecieve()回调中:如何更改小部件UI? 我必须删除rootView.removeView(layoutView)中的布局;

在此先感谢。

回答

0

好的,我发现这很容易,就像标准视图一样。

@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); 
} 

Obviusly,不得不AppWidgetManager.EXTRA_APPWIDGET_ID额外附加到的onClick的PendingIntent

相关问题