2012-02-24 24 views
7

Mi widget consta de dos diseños relativos. Hice clic en ambos diseños. Los siguientes son los identificadores de la disposición:Cambiar la visibilidad del widget al hacer clic

android:id="@+id/upper_layout" 
android:id="@+id/bottom_layout" 

Ahora, lo que necesito es que si un usuario hace clic en el upper_layout, bottom_layout debe ser invisible.

Aquí, es lo que he intentado hasta ahora pero no está funcionando. ¿Puedes verificar lo que estoy haciendo mal? O, tal vez sugiera otras formas de lograr esto.

Código:

public class BobsWidget extends AppWidgetProvider { 

    public static String ACTION_WIDGET_RECEIVER = "Clicked"; 

    @Override 
    public void onUpdate(Context context, AppWidgetManager appWidgetManager, 
      int[] appWidgetIds) { 

     RemoteViews remoteViews = new RemoteViews(context.getPackageName(), 
       R.layout.main); 
     Intent active = new Intent(context, BobsWidget.class); 
     active.setAction(ACTION_WIDGET_RECEIVER); 

     PendingIntent actionPendingIntent = PendingIntent.getBroadcast(context, 
       0, active, 0); 

     remoteViews.setOnClickPendingIntent(R.id.upper_layout, 
       actionPendingIntent); 

     appWidgetManager.updateAppWidget(appWidgetIds, remoteViews); 

    } 

    @Override 
    public void onReceive(Context context, Intent intent) { 
     // TODO Auto-generated method stub 
     // check, if our Action was called 
     if (intent.getAction().equals(ACTION_WIDGET_RECEIVER)) { 
      RemoteViews remoteViews = new RemoteViews(context.getPackageName(), 
        R.layout.main); 
      remoteViews.setViewVisibility(R.id.bottom_layout, View.INVISIBLE); 
     } 
     super.onReceive(context, intent); 
    } 

} 

Respuesta

2

usted tiene varias características incorporadas de widgets disponibles en Anndroid 3.0 o más versions.Check este link

1

creo que se olvidó de actualizar el widget. ¿Has probado algo como esto?

remoteViews.setViewVisibility(R.id.bottom_layout, View.INVISIBLE); 
final ComponentName provider = new ComponentName(context, this.getClass()); 
appWidgetManager.updateAppWidget(provider, views); 
Cuestiones relacionadas