2017-09-16 5 views
0

Ich möchte eine Android-Schaltfläche zurück Funktionalität in appcelerator für ein Eltern-Fenster und seine nachfolgenden untergeordneten Ansichten zu integrieren. Ich habe nur ein einziges Fenster im gesamten Projekt. Andere Bildschirme sind die Kinder dieses übergeordneten Fensters. Irgendwelche Vorschläge?Android Back Button Handhabung in Appcelerator

Antwort

0

Es gibt zwei Fälle, die Sie könnte dich interessieren:

  1. Überfahrt das Standardverhalten der Zurück-Taste drücken.

    $.window.onBack = function() { // run your code like change views or whatever you like };

    • Verwenden Window's onBack property Taste Rückruf befestigen zurück.
    • Sie haben die Kontrolle darüber, was passieren soll, wenn die Zurück-Taste auf diesem Fenster gedrückt wird.
  2. Wenn Sie nur verwenden Window's androidback event zusammen mit Standardverhalten von Zurück-Taste drücken, um zurück Taste drücken wollen hören.

    $.window.addEventListener('androidback', function (e){});

    • Beachten Sie, dass diese Methode immer noch das Fenster Sie sich befinden wird geschlossen, sondern ermöglicht es Ihnen, einen Code auf der Rückseite Taste drücken laufen.

ich Sie glauben, suchen Methode 1.

Hinweis: Methode 1 ist nur nach oder> SDK 5.5.1.GA. Es war eine bahnbrechende Änderung in 6.0.0.GA. Also lesen Sie die Dokumentation richtig & einige Tests auf ihre Funktionalität.

Hinzugefügt Codebeispiel zur Simulation der Funktion der Rücktaste. Diese

Alloy.Globals.trackingArray = []; 

function addNewView(_controllerName, _args) { 
    var newView = Alloy.createController(_controllerName, _args).getView(); 
    $.window.add(newView); 

    // add new view in tracking array. 
    Alloy.Globals.trackingArray.push(_controllerName); 
} 

// now use something like this whenever you remove any view using backpress 
function onBackPress() { 
    // remove lastly added view 
    Alloy.Globals.trackingArray.pop(_controllerName); 

    // add last opened view to simulate back button feature 
    var lastAddedView = Alloy.Globals.trackingArray[Alloy.Globals.trackingArray.length - 1]; 

    var tempView = Alloy.createController(lastAddedView).getView(); 

    $.window.add(tempView); 
} 

ist die Grundlage dafür, wie Sie diese Funktion verwalten können. Beachten Sie jedoch, dass Sie sich um die Verwaltung von Argumenten kümmern müssen, die beim Erstellen einer neuen Ansicht oder eines neuen Controllers übergeben werden. Es gibt mehrere Möglichkeiten, es zu tun & es hängt von Ihrem Codierungsstil ab. :)

+0

Ich habe ein Fenster und Handhabung der Zurück-Taste ist es einfach. Aber die Ansichten, die ich dem übergeordneten Fenster hinzufüge, sind insgesamt unterschiedliche Bildschirme. Die Handhabung der Zurück-Schaltfläche für diese Ansichten ist das, was ich Prashant nicht verstehe. Kannst du mir bitte helfen? – SylieC

+0

Sie müssen 'exitOnClose: false' setzen und dann können Sie das' androidback'-Ereignis verwenden, um Ihre Ansichten zu ändern – miga

+0

@SylieC, müssen Sie eine benutzerdefinierte Behandlung von Ansichten erstellen, die Sie in diesem einzigen Fenster hinzufügen oder entfernen. Verwenden Sie meine Antwort zusammen mit der benutzerdefinierten Handhabung. Z.B. Nehmen wir an, Sie haben view1 im Fenster, jetzt legen Sie eine Array-Variable fest, die die hinzugefügten Ansichten verfolgt. Sie werden das Fenster schließen, wenn dieses Array nur eine Ansicht hat. Siehe meine bearbeitete Antwort für eine klarere Erklärung. –