Domanda

Ho un widget che visualizza un orologio analogico. Quello che vorrei è per il il widget per scrivere in un database il momento in cui un utente fa clic sul widget. Ho già ottenuto la classe databaseHelper e hanno un'attività che consente di visualizzare una schermata che mostra la data e l'ora correnti e scrive il tempo di un database.

Ho seguito il tutorial qui: orologio analogico Tutorial e si è conclusa con questo:

public void onReceive(Context context, Intent intent)
{
    String action = intent.getAction();
    if (AppWidgetManager.ACTION_APPWIDGET_UPDATE.equals(action))
    {
        RemoteViews views = new RemoteViews(context.getPackageName(), R.layout.widget);
        this.mIntent = new Intent(context, AskTheTime.class);
        PendingIntent pendingIntent = PendingIntent.getActivity(context, 0, mIntent, 0);
        views.setOnClickPendingIntent(R.id.Widget, pendingIntent);

        AppWidgetManager.getInstance(context).updateAppWidget(intent.getIntArrayExtra(AppWidgetManager.EXTRA_APPWIDGET_IDS), views);
    }
}

La classe AskTheTime estende l'attività e registri al database in onCreate (). Ma questo significa che si visualizza solo il momento in cui è stato avviato il widget - non quando è stato cliccato. (Credo che questo è perché sto iniziando un pendingIntent) Io non sono sicuro se devo mettere la scrittura di database in un altro metodo, o se dovrei usare Intenti per fare questo genere di cose da widget. Qualsiasi suggerimento sarebbe grandioso! Ho un'occhiata a diversi tutorial per intenti, ma nessuno di loro sembra molto chiaro per me.

È stato utile?

Soluzione

Quando si preme il tuo widget, il sistema operativo attiva l'intento attesa si imposta sul widget.

Sembra che si sta aprendo un AskTheTime attività quando viene premuto il widget di.

Quindi, il problema è che AskTheTime potrebbe essere già stato creato quando si preme il widget di, in modo che il onCreate() non si chiama di nuovo.

Che cosa si potrebbe fare è provare a fare la tua registrazione in onStart () o onResume () al posto di, o in aggiunta a, onCreate() all'interno del vostro activity.

Dalla documentazione relativa onStart:

  

Chiamato quando l'attività sta diventando   visibili per l'utente.

E onResume:

  

Chiamato quando l'attività avrà inizio   interagire con l'utente. A questo   puntare la vostra attività è in cima   la pila attività, con input dell'utente   andare ad esso.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top