2013-07-29 14 views
7

Właśnie zaczynam z Androidem i postępowałem zgodnie z tym przewodnikiem po dodaniu nawigacji w górę do działania na pasku akcji.Android: złe przejście podczas używania navigateUpFromSameTask()

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

Jednak przejście od kiedy używam się przycisk z paska działań sprawia, że ​​pokazują, jak przejście Fade-in otwarcia nowej działalności zamiast zejścia, że ​​powinna ona być, jak ma to miejsce po naciśnięciu przycisku wstecz na dole.

Co mogę zrobić, aby wyświetlić prawidłowe przejście? Dzięki.

Odpowiedz

0

Zmieniłem go, aby zakończyć(); i wydaje się, że robi to, co chcę.

+5

tak, ale to nie jest poprawne, sprawdź tę prezentację tutaj dlaczego nie jest to zalecane, aby to zrobić: https://speakerdeck.com/jgilfelt/this-way-up-implementing -effective-navigation-on-android – Ciprian

-1

można użyć overridePendingTransition metoda():

połączenia natychmiast po jednej ze smakami startActivity (intent) lub finish(), aby określić wyraźne animację przejścia do wykonania następnego.

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

+0

to nie działa dla NavUtils navigateUpFromSameTask()/navigateUpTo() – SjoerdvGestel

+0

sprawdzanie kodu źródłowego, powinno działać ;-) http://grepcode.com/file/repo1.maven.org/ maven2/com.google.android/support-v4/r7/android/support/v4/app/NavUtils.java – Cliffus

13

stwierdzenie android:launchMode="singleTop" wewnątrz manifest.xml dla działalności macierzystej.

Przejście następnie zmienić domyślny zanikać podczas wywoływania coś takiego:

@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); 
} 

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

+0

Gdy nastąpiło niestandardowe przejście między rodzicem a bieżącą czynnością, w tym elementem wspólnym, jedyny sposób, w jaki mogę go uzyskać aby odwrócić to przejście, wywołując 'finishAfterTransition' bezpośrednio. Żadne wywołania metod 'NavUtils' nie wykonają zadania, nawet jeśli przejdę do' finish' w bieżącej czynności, aby wywołać 'finishAfterTransition'. Czy ktoś wie, dlaczego? Właśnie szukam/publikuję moje własne pytanie na ten temat. – user3175580

8

Należy użyć navigateUpTo() metody i ustawić flagę bez animacji do W takim razie:

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

Będziesz miał "ładną" animację z powrotem i prawidłowe użycie przycisku Góra. this jest bieżącą aktywnością.

1

@ Rozwiązanie Cipriana działa dla mnie.

Również navigateUpFromSameTask() tylko wygoda metoda równoznaczne z wywołaniem:

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

Po dodaniu flagi Intent.FLAG_ACTIVITY_NO_ANIMATION aktywność défaut zanikanie transation staje się skuteczne.

1

Walczyłem wiele dla tych samych problemów i udało się rozwiązać go w następujący sposób:

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

zawsze, gdy nacisnął przycisk Wstecz onBackPressed() nazywa też. Wywołanie go po naciśnięciu przycisku cofania paska akcji spowoduje tylko to samo.

0

Może to być mylące, jak było dla mnie. Jednak moim rozwiązaniem było po prostu dodanie android:launchMode="singleTop" do wszystkich rodziców bez względu na to, czy rodzic ma innego rodzica.

Nadzieja to pomaga :)