Sto scrivendo un widget con un'attività di configurazione che chiama il metodo seguente quando il suo pulsante OK
viene cliccato:Come imposto un aggiornamento in un'attività di configurazione?
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();
}
Questo è quasi pari pari da the documentation. widget_id
contiene l'ID del widget che è stato rilevato durante l'attività onCreate()
.
Quando ho posto un'istanza del widget nella schermata iniziale, ho verificato che ho la sequenza di eventi previsto:
onReceive()
ottiene unACTION_APPWIDGET_ENABLED
se è il primo.onUpdate()
viene chiamato (in cui rilevo che il widget non è configurato e disegna qualcosa come azione predefinita).- Viene visualizzata l'attività di configurazione.
- Quando si preme
OK
, viene chiamato il metodook()
precedente.
Il metodo ottiene tutto il percorso fino alla finish()
e l'attività di configurazione va via, ma non c'è nessuna chiamata a onUpdate()
o onReceive()
dopo questo punto. (Il widget stesso non ha updatePeriodMillis
.) Finisco con un widget sullo schermo che ha i risultati della mia azione predefinita ma non viene mai aggiornato.
Se imposto il widget senza un'attività di configurazione, viene aggiornato quando viene creato e tutto funziona come previsto (solo senza i bit configurati).
Mi manca qualcosa nel modo in cui imposto un aggiornamento?
Grazie!
Wow, nessuno ...? – Blrfl
questo è un bug noto in Android: onUpdate dovrebbe essere chiamato solo una volta tornato dalla tua attività di configurazione. Ho lo stesso identico problema. Spero che 3.2 lo risolverà – soBinary