2013-07-29 41 views
7

我剛剛開始使用Android,並按照本指南將向上導航添加到操作欄上的活動。Android:使用navigateUpFromSameTask()時發生錯誤轉換

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

然而,當我使用了按鈕操作欄過渡使它顯出打開一個新的活動,而不是淡出,它應該是,爲淡入過渡它在按下底部的後退按鈕時會執行。

我能做些什麼來使其顯示正確的轉換? 謝謝。

回答

0

我改成finish();這似乎是做我想要的。

+5

是的,但這是不正確的,在這裏看看這個演示,爲什麼不建議這樣做:https://speakerdeck.com/jgilfelt/this-way-up-implementing -effective-navigation-on-android – Ciprian

-1

你可以使用的方法overridePendingTransition():startActivity(意向)或完成()的口味之一後,立即

呼叫指定一個明確的過渡動畫旁邊的執行。

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

+0

這不適用於NavUtils navigateUpFromSameTask()/ navigateUpTo() – SjoerdvGestel

+0

檢查源代碼,它應該工作;-) http://grepcode.com/file/repo1.maven.org/ maven2/com.google.android/support-v4/r7/android/support/v4/app/NavUtils.java – Cliffus

13

聲明android:launchMode="singleTop"您的Manifest.xml爲你的父母的活動中。

的過渡,然後將變爲默認淡出調用像時:

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

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

+0

當在父活動和當前活動之間存在自定義轉換時,包括共享元素,我可以得到它的唯一方法通過直接調用'finishAfterTransition'來反轉該轉換。即使我在當前活動中覆蓋'finish'來調用'finishAfterTransition',也不會調用'NavUtils'方法。有誰知道爲什麼?我即將搜索/發佈有關此主題的自己的問題。 – user3175580

8

您應該使用navigateUpTo()方法,並設置標誌沒有動畫的意圖,像這樣:

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

你會有'很好'的後退動畫,並正確使用向上按鈕。 this是當前活動。

1

@ Ciprian的解決方案適用於我。

此外,navigateUpFromSameTask()僅僅是一個方便的方法等效於調用:

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

當您添加Intent.FLAG_ACTIVITY_NO_ANIMATION旗,defaut活動淡出TRANSATION生效。

1

我掙扎了很多關於這個同樣的問題,並設法如下解決了這個問題:

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

每當你按下後退按鈕onBackPressed()叫過。按下操作欄後退按鈕時調用它只會做同樣的事情。

0

它可能會讓我感到困惑。然而,我的解決方案是簡單地將android:launchMode="singleTop"添加到全部的父母,不管父母是否有另一個父母。

希望它能幫助:)

相關問題