2013-07-29 9 views
7

Ich beginne gerade mit Android und befolgte diese Anleitung, um die Navigation nach oben zu einer Aktivität in der Aktionsleiste hinzuzufügen.Android: falscher Übergang bei der Verwendung von navigateUpFromSameTask()

http://developer.android.com/training/implementing-navigation/ancestral.html

jedoch der Übergang von, wenn ich die Öffnungstaste in der Aktionsleiste verwenden macht zeigen sie als Einblendung im Übergang von einer neuen Aktivität statt der fade-out Öffnung, die es sein sollte, wie es tut, wenn Sie den Zurück-Knopf auf der Unterseite drücken.

Was kann ich tun, damit der richtige Übergang angezeigt wird? Danke.

Antwort

0

Ich änderte es zu beenden(); und das scheint zu tun, was ich will.

+5

ja, aber das ist nicht richtig, diese Präsentation hier ansehen, warum es nicht zu empfehlen, das zu tun: https://speakerdeck.com/jgilfelt/this-way-up-implementing -effective-navigation-on-android – Ciprian

-1

können Sie die Methode overridePendingTransition() verwenden:

Anruf unmittelbar nach einer der Aromen von startActivity (Intent) oder Finish() neben einer expliziten Übergang Animation ausführen zu spezifizieren.

http://developer.android.com/reference/android/app/Activity.html#overridePendingTransition(int, int)

+0

dies funktioniert nicht für NavUtils navigateUpFromSameTask()/navigateUpTo() – SjoerdvGestel

+0

Überprüfen Sie den Quellcode, es sollte funktionieren ;-) http://grepcode.com/file/repo1.maven.org/ maven2/com.google.android/support-v4/r7/android/support/v4/app/NavUtils.java – Cliffus

13

Deklarieren android:launchMode="singleTop" in Ihrem Manifest.xml für Ihre Eltern Aktivität.

Der Übergang wird dann auf den Standard ändern, wenn wie etwas Aufruf fade out:

@Override 
public boolean onOptionsItemSelected(MenuItem item) { 
    switch (item.getItemId()) { 
    // Respond to the action bar's Up/Home button 
    case android.R.id.home: 
     NavUtils.navigateUpFromSameTask(this); 
     return true; 
    } 
    return super.onOptionsItemSelected(item); 
} 

(aus: http://developer.android.com/training/implementing-navigation/ancestral.html#NavigateUp)

+0

Wenn es einen benutzerdefinierten Übergang zwischen übergeordneten und aktuellen Aktivität, einschließlich eines gemeinsamen Elements, gab, die einzige Möglichkeit, wie ich es bekommen kann Um diesen Übergang umzukehren, rufen Sie 'finishAfterTransition' direkt auf. Keine Aufrufe von 'NavUtils'-Methoden werden die Aufgabe erledigen, auch wenn ich' Finish' in der aktuellen Aktivität als 'finishAfterTransition' aufrufen würde. Weiß jemand warum? Ich bin dabei, nach einer eigenen Frage zu diesem Thema zu suchen. – user3175580

8

sollten Sie navigateUpTo() -Methode verwenden und das Flag keine Animation auf die eingestellte Absicht, wie folgt:

final Intent intent = NavUtils.getParentActivityIntent(this); 
intent.addFlags(Intent.FLAG_ACTIVITY_NO_ANIMATION); 
NavUtils.navigateUpTo(this, intent); 

Sie haben die "nette" Rückenanimation und die korrekte Verwendung der Hoch-Taste. this ist die aktuelle Aktivität.

1

@ Ciprians Lösung funktioniert für mich.

Auch navigateUpFromSameTask() ist nur eine bequeme Methode entspricht Aufruf:

final Intent intent = NavUtils.getParentActivityIntent(this); 
NavUtils.navigateUpTo(this, intent); 

Wenn Sie die Intent.FLAG_ACTIVITY_NO_ANIMATION Flag hinzufügen, die defaut Aktivität auszublenden transation wirksam wird.

1

ich viel für diese gleichen Probleme gerungen und schaffte es wie folgt gelöst:

 case android.R.id.home: 
      onBackPressed(); 
      return true; 

Jedes Mal, wenn Ihr die Zurück-Taste gedrückt onBackPressed() auch genannt wird. Wenn Sie es aufrufen, wenn die Zurück-Taste der Aktionsleiste gedrückt wird, wird nur das Gleiche gemacht.

0

Es könnte verwirren, wie es für mich war. Meine Lösung bestand jedoch einfach darin, android:launchMode="singleTop" zu alle der Eltern hinzuzufügen, unabhängig davon, ob der Elternteil einen anderen Elternteil hat.

Hoffe, es hilft :)

Verwandte Themen