More information... This is the code of my widget:

public class GproWidgetProvider extends AppWidgetProvider {
    // Log tag
    private static final String TAG = "GproWidgetProvider";


    public void onUpdate(Context context, AppWidgetManager
appWidgetManager, int[] widgetIds) {
        Log.d(TAG, "onUpdate");
        final int N = widgetIds.length;

        // Por cada widget asociado al provider
        for (int i = 0; i < N; i++) {
            int widgetId = widgetIds[i];
            updateWidget(context, appWidgetManager, widgetId,
                    GproUtils.getDriver(context, widgetId,
GproWidgetConfigure.loadManagerName(context, widgetId)));
        }
    }

    /**
     * Inicializa el widget, configura los botones, y actualiza la
información de la pantalla del widget.
     * Consulta la clasificación, y muestra la posición, el tiempo y
la diferencia con el primer clasificado.
     */
    static void setUpWidget(Context context, AppWidgetManager
appWidgetManager, int widgetId, String manager) {
        Log.d(TAG, "Setting up GproWidget [" + widgetId + "]");
        // Obtenemos las vistas del widget
        RemoteViews views = new RemoteViews(context.getPackageName(),
R.layout.gpro_widget);

        // Crear un intent para lanzar una activity
        Intent intent = new Intent(context, GproGridViewer.class);
        intent.putExtra(AppWidgetManager.EXTRA_APPWIDGET_ID,
widgetId);
        PendingIntent pendingIntent =
PendingIntent.getActivity(context, 0, intent,
PendingIntent.FLAG_UPDATE_CURRENT);

        // Asociamos la llamada al intent anterior en el onclick del
botón
        views.setOnClickPendingIntent(R.id.grid_button,
pendingIntent);

        // Crear un intent para lanzar una activity
        Intent intentRace = new Intent(context, GproRaceViewer.class);
        intentRace.putExtra(AppWidgetManager.EXTRA_APPWIDGET_ID,
widgetId);
        PendingIntent pendingIntentRace =
PendingIntent.getActivity(context, 0, intentRace,
PendingIntent.FLAG_UPDATE_CURRENT);

        // Asociamos la llamada al intent anterior en el onclick del
botón
        views.setOnClickPendingIntent(R.id.race_button,
pendingIntentRace);

        // Actualizamos el texto del widget
        Driver driver = GproUtils.getDriver(context, widgetId,
manager);
        String info = "";
        if (driver != null) {
            info = driver.shortToString();
        } else {
            info = context.getString(R.string.not_qualified);
        }
        views.setTextViewText(R.id.text, info);

        // Actualizar el widget
        appWidgetManager.updateAppWidget(widgetId, views);
    }

    /**
     * Actualiza la información de la pantalla del widget con los
datos del piloto recibido. No actualiza ni los botones
     * ni nada más.
     */
    static void updateWidget(Context context, AppWidgetManager
appWidgetManager, int widgetId, Driver driver) {
        Log.d(TAG, "Updating driver info for GproWidget [" + widgetId
+ "]");
        // Obtenemos las vistas del widget
        RemoteViews views = new RemoteViews(context.getPackageName(),
R.layout.gpro_widget);

        String info = "";
        if (driver != null) {
            info = driver.shortToString();
        } else {
            info = context.getString(R.string.not_qualified);
        }
        views.setTextViewText(R.id.text, info);

        // Actualizar el widget
        appWidgetManager.updateAppWidget(widgetId, views);
    }
}

-- 
You received this message because you are subscribed to the Google
Groups "Android Developers" group.
To post to this group, send email to android-developers@googlegroups.com
To unsubscribe from this group, send email to
android-developers+unsubscr...@googlegroups.com
For more options, visit this group at
http://groups.google.com/group/android-developers?hl=en

Reply via email to