Ich erstelle eine App mit PhoneGap und jQuery Mobile.
Mit jQuery Mobile habe ich eine verschachtelte Liste erstellt.
Nachdem ich in die geschachtelte Liste geklickt habe, möchte ich zurückgehen. Ich erwarte, dass das Zurück-Knopf auf meinem Android (N1) klickt, dass es eine Ebene zurückgehen wird.
Aber statt Android schließt die App, anstatt eine Ebene höher zu gehen.
Mit PhoneGap 1.2.0, jQuery Mobile v1.0rc2, jQuery 1.6.4, Android 2.3.3.
Bearbeiten: Aktualisieren Sie auf jQuery Mobile 1.0 und es gibt keine Änderung
Sie können auf Ereignisse der Rücktaste warten:
%Vor%Wenn die aktuelle Seite eine Homepage ist ($ .mobile.activePage in jquery mobile), beenden Sie die Anwendung mit:
navigator.app.exitApp ();
Für diejenigen, die hierher kamen, weil die App nach dem fokussierten Textfile geschlossen wurde und den BackButton gedrückt hat: In Android 4.0.3 (ICS) müssen Sie backButton nicht mit phongap API überschreiben, um die App nicht mehr zu schließen ein Eingabe-Textfeld fokussiert haben und dann die Zurück-Taste drücken. Normalerweise schließt dies die App, weil Webkit ein Tap-Highlight mit einem zusätzlichen Umriss erstellt, der nicht mit CSS geändert werden kann.
Wenn Sie den Eingang fokussieren, wird das Softkeyboard angezeigt. Wenn Sie das erste Mal den BackButton drücken, verschwindet Ihr Softkeyboard. Wenn Sie erneut klicken, um zum Navigationsverlauf zurückzukehren, wird die App geschlossen, anstatt zur zuvor besuchten Seite zu springen. Dies liegt daran, dass die Hervorhebung aus der Navigationsstruktur herausspringt. Es scheint, dass es nicht im DOM ist. Ich verstehe dieses Verhalten nicht wirklich. Hier ist die Lösung:
Fügen Sie einfach
hinzu %Vor%Dies unterbricht das Webkit mit einem Tipp-Highlight und Sie bleiben in der App und können mit Ihrem (nicht überschriebenen) BackButton in die History zurückkehren.
Viel Spaß.
Das ist das Problem mit Dingen wie PhoneGap, sie bauen Anwendungen so auf, dass Android nicht funktioniert.
Die Zurück-Schaltfläche ruft die letzte Aktivität des Aktivitätsstapels auf. Da Sie eine ganze Anwendung haben, die mehreren Aktivitäten ähnelt, handelt es sich in Wirklichkeit um eine einzelne Aktivität mit Überlagerungen. Was Sie tun müssen, und beachten Sie, dass dies nicht die richtige Art ist, Dinge zu tun.
Sie müssen die Funktionalität der Zurück-Schaltfläche pragmatisch überschreiben, um sie zurück in die jQuery-Stacks zu bekommen, und dann, wenn die flache Android-Anwendung das einzige ist, was noch übrig ist, gehen Sie auch von dort zurück. Ich weiß nicht, ob PhoneGap Ihnen erlaubt, so viel Kontrolle über das Android-System zu haben, aber standardmäßig funktioniert das Android OS nicht normal mit Ihrer jQuery-Liste.
Ich hoffe, dies bietet einen Einblick.
Ich kam wegen des Problems mit der Zurück-Taste in einem Textfeld ( input
oder textarea
) in einer Cordova / PhoneGap App, die kein normales Verhalten auslöst (in meinem Fall wird es nicht ausgelöst) mein JavaScript-Handler).
Leider funktioniert die obige Lösung unter Verwendung von CSS unter Android 2.3 nicht.
Und die gewählte Lösung, die das Ereignis in Java überschreibt, ist nicht genug für mich, weil ich einen JS-Handler auslösen muss und nicht zurück in die Webansicht gehen muss. Außerdem implementiert diese Lösung das Cordova-Standardverhalten neu, was keine Best Practice ist, da es andere integrierte Funktionen verliert.
Also, was ich getan habe (und es funktionierte), überschrieb das KeyUp-Ereignis, wie oben, aber anstatt es neu zu implementieren, habe ich einfach den Handler auf dem appView aufgerufen (was Cordovas Implementierung ist).
%Vor%