2013-12-22 93 views
0

在我的應用程序中,每個活動在操作欄中具有相同的菜單,該菜單提供對參數活動的訪問。向上導航到來自不同子活動的父活動

當我在參數活動中時,我想通過點擊左側的箭頭來參加我的父級活動,就像我在其他活動中一樣。

其他活動的唯一父項在manifest.xml中定義。

但對於參數這是不可能的,因爲它有多個家長:

  • 母親>孩子>參數可能
  • 母親>的參數也可以!

我們可以找到這個行爲舉止在Gmail應用:

  • 主要>參數,你可以回到主
  • 主要>電子郵件>參數,你可以回去您正在查看的特定電子郵件。

所以我的問題是如何得到這個gmail comportment?我們可以動態改變參數的父活動嗎?

回答

0

有兩種方式可以做到這一點:

  1. 使用TaskStackBuilder並指定使用android:parentActivityName相關支持-V4元數據標籤as described in the corresponding Providing Up Navigation training清單和父鏈。這是推薦的方法,因爲它服從分層任務堆棧。
  2. 提供一些額外的發射意圖,並根據該自定義標誌向上導航。請注意,通過此機制啓動活動不會顯示當前活動關閉的後退動畫。
+0

我已經用這個方法對我的其他活動,我可以回去等我的活動之間轉發: A> B > C,則A> B,則A> B> d例如 因爲我在顯明定義:B的乙 d父的 ç父 乙父 但是,我的參數活性可以從每一個訪問一個因爲它有多個父項,所以我不能在manifest.xml中定義它,因爲你推薦了它,並且正如我爲其他活動所做的那樣,你知道它嗎? – Flo

+0

我建議這種情況下指定一個不同的背堆棧[詳細在這裏](http://developer.android.com/training/implementing-navigation/ancestral.html#NavigateUp)。 –

0

評論弄亂以及縮進的答案,所以我anwser我的問題:

我終於結束了一個簡單的自定義代碼, 因爲我已經訪問過幾次你的鏈接(http://developer.android.com/training/implementing-navigation/ancestral.html#NavigateUp)和它沒有幫助我很多。

這裏就是我所做的: (在http://developer.android.com/training/implementing-navigation/ancestral.html#BuildBackStackelse

// particular case 
// if this activity is the Parameter/Help activity, just finish it 

if(this.getClass().equals(ActivityParametre.class) || this.getClass().equals(ActivityAide.class)){ 
    finish(); 
    return true; 
} 
// general case 
// otherwise, use pre defined code 
else { 
    NavUtils.navigateUpTo(this, upIntent); 
}