Frage

Ich bin sicher, werden es beantwortet worden, aber ich erwies sich als unfähig, es zu finden. Also bitte meine Redundanz entschuldigen.

Was ich versuche, die „Home“ -Taste zu tun emuliert, die man zurück auf Android Startbildschirm nimmt. Also hier ist es, was macht mir Probleme:

  • Ich habe 3-Launcher-Aktivitäten. Der erste (die mit dem Homescreen-Symbol verbunden ist) ist nur eine (passwortgeschützt) -Konfiguration Aktivität. Es wird nicht durch den Benutzer (nur Admin)
  • verwendet werden
  • Eine der anderen 2 (beide über einen app-Widget zugegriffen wird) ist ein Fragebogen App. Ich bin so dass auch zwischen den Fragen über die Zurück-Taste oder eine GUI-Zurück-Taste springen. Wenn der Fragebogen fertig ist ich die Antworten gegeben zusammenzufassen und eine Schaltfläche „Finish“ zur Verfügung stellen, die den Benutzer zurück zum Home-Bildschirm nehmen.

Für den Fragebogen app ich eine einzelne Aktivität verwenden (so genannte ItemActivity), die sich selbst aufruft (ist, dass Rekursion auch wenn Absichten verwenden?) Von einer Frage springen zu einem anderen:

Questionnaire.serializeToXML();  
Intent i = new Intent().setClass(c, ItemActivity.class);  
if(Questionnaire.instance.getCurrentItemNo() == Questionnaire.instance.getAmountOfItems()) {  
    Questionnaire.instance.setCompleted(true);  
} else Questionnaire.instance.nextItem();  
startActivity(i);

Der letzte Bildschirm zeigt so etwas wie „Vielen Dank für die Teilnahme“ sowie der früher beschriebenen Taste, die man zurück zum Startbildschirm nehmen. Aber ich habe nicht wirklich, wie die Aktivität ordnungsgemäß zu beenden. Ich habe zum Beispiel gebrauchte this.finish(); aber dies bringt seltsam das „Danke“ Bildschirm wieder. Wie kann ich also verlassen nur durch Springen zurück zum Startbildschirm ??

Sorry für die inconvinience.
Grüße, Steff

War es hilfreich?

Lösung

Es klingt wie das, was passiert ist, dass Sie mehrere Kopien Ihrer Aktivitäten zur gleichen Zeit geöffnet haben. Jedes Mal, wenn eine neue Instanz einer Tätigkeit beginnen sind das Hinzufügen Sie nur neue zu dem Stapel - alle alten Aktivitäten sind immer noch da. Wenn Sie this.finish() nennen, es zeigt Ihnen nur die nächste jüngste Aktivität, die offen war. Ich bin mir nicht sicher, warum das ist der „Danke“ -Bildschirm vermutlich weil die erst am Ende geöffnet wird, aber dann kann ich nicht vollständig der Reihenfolge Ihre Aktivitäten folgt aufgerufen.

Was können Sie versuchen, es zu tun zu beheben, ist entweder: 1) verwenden, um eine finish() jedes Mal nach einer neuen Tätigkeit für eine andere Frage beginnen (so, dass es immer nur eine Frage offen stehenden Tätigkeit zu einem Zeitpunkt) oder 2), ob Sie können Gebrauch machen von der Absicht Flagge CLEAR_TOP machen. Das beginnt mit der Zielaktivität, während etwas zu töten, die oben in dem Stapel gewesen sein könnten. Wenn Sie zum Beispiel haben Aktivitäten: A, B, C, C, C, C, C (usw. für jede Frage), dann beginnen A mit CLEAR_TOP werden alle Instanzen von B und C. töten Sie diese in Ihre Programmstruktur passen könnte durch Ändern des ersten Bildschirm sieht der Benutzer, wenn sie einen Fragebogen starten. Dies würde zeigt eine ‚Willkommen‘ Nachricht standardmäßig mit einer Taste, um den Fragebogen zu starten. wenn es mit einem bestimmten Wert gestartet ist jedoch mit der Absicht, gebündelt, wäre es angezeigt, die „Danke“ an.

Wenn Sie das tun, dann, wenn Sie Aktivität A finish(), wird der Benutzer zurückgegeben werden, wo sie waren, bevor sie Ihre App gestartet -. Vermutlich der Startbildschirm, wenn es mit einem appwidget gestartet ist

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