PhoneGap + jQueryMobile: Die Schaltfläche "Zurück" von Android schließt die App in der verschachtelten Liste

7

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

    
bzmw 24.11.2011, 02:30
quelle

6 Antworten

8

Ich habe das gleiche Problem, ich habe herausgefunden, wie man mit der Zurück-Taste im Java-Code umgehen kann.

Dies geht, wenn möglich, um einen Schritt zurück, oder Sie verlassen die App.

%Vor%

Es ist auch möglich, es auf der JavaScript-Seite zu tun:

%Vor%     
Rob 24.11.2011, 08:23
quelle
11

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

    
Flatlineato 24.11.2011 08:32
quelle
2

Versuchen Sie auch:

%Vor%     
mukama 15.07.2012 06:46
quelle
2

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ß.

    
Irfan Cütcü 27.08.2012 10:05
quelle
0

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.

    
Glenn.nz 24.11.2011 03:25
quelle
0

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%     
rachel 19.10.2012 15:00
quelle

Tags und Links