Estoy escribiendo un widget con una actividad de configuración que llama al método siguiente cuando se hace clic en el botón de OK
:¿Cómo fuerzo una actualización en una actividad de configuración?
private void ok()
{
// ...Do Widget Configuration...
// Force an update
Context context = getApplicationContext();
RemoteViews views = new RemoteViews(context.getPackageName(), R.layout.widget);
AppWidgetManager.getInstance(context).updateAppWidget(widget_id, views);
// Return the expected result
Intent result = new Intent();
result.putExtra(AppWidgetManager.EXTRA_APPWIDGET_ID, widget_id);
setResult(RESULT_OK, result);
finish();
}
Esto es casi literalmente de the documentation. widget_id
contiene la identificación del widget que se desenterró durante la actividad onCreate()
.
cuando coloco una instancia del widget en la pantalla principal, He verificado que consigo la secuencia esperada de eventos:
onReceive()
obtiene unACTION_APPWIDGET_ENABLED
si se trata de la primera.onUpdate()
se llama (en el que detecto que el widget no está configurado y dibujo algo como una acción predeterminada).- Aparece la actividad de configuración.
- Cuando presiono
OK
, se llama al método anteriorok()
.
El método obtiene todo el camino a través de la finish()
y la actividad de configuración se va, pero no hay ninguna llamada a onUpdate()
o onReceive()
después de este punto. (El widget en sí no tiene updatePeriodMillis
). Termino con un widget en la pantalla que tiene los resultados de mi acción predeterminada pero nunca se actualiza.
Si configuro el widget sin una actividad de configuración, se actualiza cuando se crea y todo funciona como se espera (solo sin los bits configurados).
¿Me falta algo en la forma en que fuerzo una actualización?
Gracias!
Wow, nadie ...? – Blrfl
este es un error conocido en android: onUpdate solo debe invocarse una vez que hayas regresado de tu actividad de configuración. Tengo exactamente el mismo problema. Con suerte 3.2 lo resolverá – soBinary