2016-05-05 1 views
2

Ich bekomme ein seltsames Navigationsverhalten und ich weiß nicht, warum es nicht geschieht, wie es zu beheben ist.Android Broken Navigation

Ich habe gerade ein neues Projekt in Android Studio 2.1 erstellt und eine Login Activity und eine Master/Detail Flow Activity aus der Activity Gallery hinzugefügt.

Intent intent = new Intent(this, ItemListActivity.class); 
startActivity(intent); 

diese Weise die App öffnet sich in einem Login Activity und wenn ich auf die Sign In Taste, springt er auf die Master/Detail Flow Activity .... so weit:

ich den folgenden Code innerhalb attemptLogin() in die LoginActivity hinzugefügt , so gut .... ABER, wenn ich auf den Zurück-Hauptknopf auf der Master/Detail Flow Activity Werkzeugleiste klicke, schließt sich die APP, es geht nicht wie erwartet zum Login Activity zurück.

Die Master/Detail Flow Activity Werke, als ob zu erwarten, wenn ich einen Artikel klicken, wird ein neues Activity öffnet sich mit Details der Artikel, und es ist wieder Taste funktioniert wie erwartet, womit sich die App zurück zum List Activity.

ich keinen Code in der Login Activity oder Master/Detail Flow Activity, die den Rücken Stapel ändern würde finden können, habe ich sogar eine zweite Login Activity, die App unterwegs machen:

Login Activity 1 ->Login Activity 2 ->Master/Detail Flow Activity

Es funktioniert wie erwartet jetzt zwischen Login Activity 1 und Login Activity 2 aber wenn ich versuche, von Master/Detail Flow Activity zurückzugehen, anstatt zurück zu Login Activity 2, schließt es die App ... und ich kann keinen Code in Master/Detail Flow Activity entweder finden, die die Rückseite ändern würde Stapel. Mein AndroidManifest ist auch so, wie es sein sollte (und es wurde automatisch von Android Studio generiert, ich habe nichts geändert).

Ich habe sogar versucht, eine zu tun:

Login Activity 1 ->Login Activity 2 ->Master/Detail Flow Activity 1 ->Master/Detail Flow Activity 2

Und der Fehler noch besteht zwischen Login Activity 2 -> Master/Detail Flow Activity 1 ... aber es funktioniert wie zwischen Master/Detail Flow Activity 1 -> Master/Detail Flow Activity 2 und Login Activity 1 -> Login Activity 2 erwartet .. .so wieder, keine Hinweise dort, und das wurde wirklich seltsam, da dieser Test zeigt, ist es nicht auf dem Login Activity Aufruf des neuen Activity und weder in der Master/Detail Flow Activity Empfang, sondern nur in der Schnittstelle zwischen diesen beiden insbesondere Activities.

Dies ist ziemlich einfach für jeden zu versuchen und zu reproduzieren, erstellen Sie einfach ein neues Projekt und erstellen Sie die Activities wie gesagt. Was kann ich tun, um zur Login Activity zurückzukehren? Warum passiert dies?


EDIT:

Voll Code zum Testen here

+0

Beste Vorgehensweise: Debuggen Sie zuerst den Code mit Breakpoints, wenn kein Fehler gefunden wird. Geben Sie Ihren Code ein. –

+0

Ich debuggte alles ... Der Code ist zu groß zum Posten, es ist einfacher, es selbst in Android Studio zu erstellen. – mFeinstein

Antwort

2

Ihr Problem ist, weil in Ihrer inneren Klasse UserLoginTask, dass sein in der LoginActivity Klasse, die Sie anrufen finish() innerhalb der onPostExecute() Methode.Entfernen Sie diese Zeile und Sie werden feststellen, dass die App gut funktioniert. So würde es so aussehen:

 @Override 
     protected void onPostExecute(final Boolean success) { 
      mAuthTask = null; 
      showProgress(false); 

      if (!success) { 
       mPasswordView.setError(getString(R.string.error_incorrect_password)); 
       mPasswordView.requestFocus(); 
      } 
     } 

I getestet und ihre Arbeits wie erwartet!

+0

Ich fühle mich jetzt albern ... Ich habe nach allen 'finish' und' navigateUpFromSameTask' gesucht, ich glaube ich habe das verpasst! Vielen Dank! Nur eine Sache bekomme ich nicht .... warum geht es von 'LoginActivity2' nach' LoginActivity' zurück, wenn beide dann fertig sind? – mFeinstein

+0

Nein, eine Aktivität ist beendet, wenn Sie explizit() beenden. Bitte markieren Sie diese Antwort als richtig, wenn es gut für Sie funktioniert – JpCrow

+0

Ich habe es .... Ich kann zwischen den Aktivitäten hin und her gehen, weil ich es schnell mache ... weniger als 2 Sekunden, was die Verzögerung der Hintergrundaufgabe ist. ..so so weit ich innerhalb von 2 Sekunden navigiere, alles funktioniert ..... alles macht jetzt Sinn! Vielen Dank! – mFeinstein