2011-03-18 25 views
22

He creado un widget en android y funciona con éxito, pero ahora quiero usar el evento click del widget para que pueda abrir una nueva actividad a partir de eso.android widget on click event

Ayúdame

+1

Cuando encuentre ninguna respuesta como correcta, lo acepta, pero poniendo la garrapata marca. – Mathew

+1

Consulte http://stackoverflow.com/questions/2748590/clickable-widgets-in-android –

Respuesta

-3

Dentro de su diseño, para ese widget en particular doy

android:onClick="your method name inside your activity" 

y en su actividad, dan:

public void methodname(View view) { 
     //give your intent code here 
} 

Nota: Cuando se llama a un método como este, su método debe ser público y debe tener un objeto Ver como parámetro.

+1

android: onClick solo está disponible en Android 1.6+ – Raunak

+0

¿qué versión de Android está utilizando? – Mathew

+1

android: onClick no es compatible con widgets. Si tiene esto, el widget ni siquiera aparecería en la pantalla de inicio; mostraría que el mensaje de error no pudo cargar el widget ... – coolcool1994

8

He utilizado este:

// Create an Intent to launch ExampleActivity 
     Intent intent = new Intent(context, Mainpage.class); 
     PendingIntent pendingIntent = PendingIntent.getActivity(context, 0, intent, 0); 
     remoteViews.setOnClickPendingIntent(R.id.widget, pendingIntent); 
+10

Sí, pero ¿dónde se llamará el método cuando se haga clic en el widget? – KalEl

+0

gracias ... me ayudó –

35
@Override 
public void onUpdate(Context context, AppWidgetManager appWidgetManager, 
        int[] appWidgetIds) { 
    for (int i = 0; i < appWidgetIds.length; i++) { 
     int appWidgetId = appWidgetIds[i]; 

     Intent intent = new Intent(context, TaskManagerActivity.class); 
     PendingIntent pendingIntent = PendingIntent.getActivity(context, 0, intent, 0); 

     RemoteViews views = new RemoteViews(context.getPackageName(), R.layout.widget); 
     views.setOnClickPendingIntent(R.id.widget_layout, pendingIntent); 
     appWidgetManager.updateAppWidget(appWidgetId, views); 
    } 
} 

En widget.xml Tengo elemento raíz LinearLayout con id widget_layout

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
      android:id="@+id/widget_layout" 
      android:layout_width="fill_parent" 
      android:layout_height="fill_parent" 
      android:paddingTop="10dip" 
      android:paddingLeft="10dip" 
      android:orientation="vertical"> 
+1

esto funcionó para mí, gracias :) –

+0

Hola @xtem, estoy enfrentando un problema al detectar el ID del widget. Creé 3 widgets en la pantalla de inicio y quiero cambiar el tema de cada uno por separado. Entonces, cuando hago clic en el widget, mi clase de Configuración se abre y onUpdate() cada uno de mis widgets se actualiza. ¿Puedo hacerlo por separado? –