Frage

Ich habe ein Widget, das eine analoge Uhr anzeigt. Ich möchte, dass das Widget in eine Datenbank schreibt, wenn ein Benutzer auf das Widget klickt. Ich habe bereits die DataBaseHelper -Klasse und habe eine Aktivität, die einen Bildschirm anzeigt, der das aktuelle Datum und die aktuelle Uhrzeit zeigt und die Zeit in eine Datenbank schreibt.

Ich folgte dem Tutorial hier: Analog Uhr Tutorial und endete damit:

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);
    }
}

Die Askthetime -Klasse erweitert die Aktivität und loget sich in der Datenbank in OnCreate () an. Dies bedeutet jedoch, dass nur die Zeit angezeigt wird, in der das Widget gestartet wurde - nicht, wenn es geklickt wurde. (Ich denke, das liegt daran, dass ich mit einem anhängigen Ausgleich starte.) Ich bin mir nicht sicher, ob ich die Datenbank schreiben sollte, in eine andere Methode, oder ob ich Absichten verwenden sollte, um so etwas aus Widgets zu machen. Alle Zeiger wären großartig! Ich habe mir mehrere Tutorials für Absichten angesehen, aber keiner von ihnen scheint mir sehr klar zu sein.

War es hilfreich?

Lösung

Wenn Ihr Widget gedrückt wird, aktiviert das Betriebssystem die ausstehende Absicht, die Sie auf dem Widget festgelegt haben.

Es sieht so aus, als ob Sie eine Aktivität öffnen, wenn das Widget gedrückt wird.

Das Problem ist also, dass AskThTime möglicherweise bereits erstellt wurde, wenn das Widget gedrückt wird, also die onCreate() wird nicht wieder aufgerufen.

Was Sie tun könnten, ist zu versuchen, Ihre Protokollierung zu machen am Start() oder auf Wiederaufnahme() statt oder zusätzlich zu, onCreate() in deinem activity.

Aus der Dokumentation bezüglich onStart:

Aufgerufen, wenn die Aktivität für den Benutzer sichtbar wird.

Und Onresume:

Aufgerufen, wenn die Aktivität mit dem Benutzer interagiert. Zu diesem Zeitpunkt befindet sich Ihre Aktivität oben im Aktivitätsstapel, wobei die Benutzereingabe dazu geht.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top