2013-07-29 11 views
7

Ho appena iniziato con Android e ho seguito questa guida per aggiungere la navigazione Su a un'attività nella barra delle azioni.Android: transizione errata durante l'utilizzo di navigateUpFromSameTask()

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

Tuttavia, la transizione di quando uso il pulsante su dalla barra delle operazioni rende mostrano come la transizione fade-in di aprire una nuova attività, piuttosto che il fade-out che dovrebbe essere, come lo fa quando premi il pulsante Indietro in basso.

Cosa posso fare per visualizzare la transizione corretta? Grazie.

risposta

0

L'ho modificato per finire(); e questo sembra fare ciò che voglio.

+5

sì, ma che non è corretto, controlla questa presentazione qui il motivo per cui non è consigliabile farlo: https://speakerdeck.com/jgilfelt/this-way-up-implementing -effective-navigation-on-android – Ciprian

-1

è possibile utilizzare il metodo overridePendingTransition():

chiamata subito dopo uno dei sapori della startActivity (Intento) o finitura() per specificare un'animazione transizione esplicito per eseguire il prossimo.

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

+0

questo non funziona per NavUtils navigateUpFromSameTask()/navigateUpTo() – SjoerdvGestel

+0

controllando il codice sorgente, dovrebbe funzionare ;-) http://grepcode.com/file/repo1.maven.org/ maven2/com.google.android/support-v4/r7/android/support/v4/app/NavUtils.java – Cliffus

13

Dichiarare android:launchMode="singleTop" all'interno del vostro Manifest.xml per la vostra attività genitore.

La transizione sarà quindi modificare il valore predefinito fade out quando si chiama qualcosa come:

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

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

+0

Quando c'era una transizione personalizzata tra parent e attività corrente, incluso un elemento condiviso, l'unico modo per ottenerlo per invertire questa transizione è possibile chiamare direttamente "finishAfterTransition". Nessuna chiamata ai metodi 'NavUtils' farà il lavoro, anche se ho annullato' finish' nell'attività corrente per chiamare 'finishAfterTransition'. Qualcuno sa perché? Sto per cercare/pubblicare la mia domanda su questo argomento. – user3175580

8

Si dovrebbe usare navigateUpTo() e impostare il flag nessuna animazione al intento, come questo:

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

Avrai l'animazione della parte posteriore "carina" e l'uso corretto del pulsante Su. this è l'attività corrente.

1

@ La soluzione di Ciprian funziona per me.

Inoltre, navigateUpFromSameTask() è solo una comodità metodo equivalente a chiamare:

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

Quando si aggiunge il flag Intent.FLAG_ACTIVITY_NO_ANIMATION, l'attività defaut fade out transation ha effetto.

1

ho faticato molto per questo stesso problema e sono riusciti a risolvere nel modo seguente:

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

Ogni volta che il premuto il tasto indietro onBackPressed() è chiamato anche. Chiamandolo quando viene premuto il pulsante indietro della barra delle azioni si limiterà a fare la stessa cosa.

0

Potrebbe diventare confuso come fosse per me. Tuttavia, la mia soluzione è stata semplicemente aggiungendo android:launchMode="singleTop" a tutti i dei genitori indipendentemente dal fatto che il genitore abbia un altro genitore.

Speranza che aiuta :)

Problemi correlati