2013-03-01 87 views
0

我正在獲取經典列表內容模式的應用程序,展示了左側菜單選項和中心內容的列表。不同的菜單選項會將內容與顯示新信息的相應片段交換。適當的Android向上導航片段

我正在與實施適當的向上導航掙扎:

|---------------------------------------| 
|< Frag. B |    B1 B2 B3 | 
|----------|----------------------------| 
|Fragment A|       | 
[Fragment B]       | 
|Fragment C|  Fragment B.2  | 
|Fragment D|       | 
|Fragment E|       | 
|----------|----------------------------| 

在上圖中所述用戶已經導航到碎片B.2。他首先從菜單中選擇了F片段B,之後他按下了一個按鈕,使他「進一步進入」片段B,到片段B.2。

如果用戶現在按下按HOME鍵(如在家中一樣)按鈕,他將返回到片段B.這是按照計算的。

然而,片段B.2裏面有ActionBar中的按鈕將用戶帶到片段E.2:

|---------------------------------------| 
|< Frag. E |    E1 E2 E3 | 
|----------|----------------------------| 
|Fragment A|       | 
|Fragment B|       | 
|Fragment C|  Fragment E.2  | 
|Fragment D|       | 
[Fragment E]       | 
|----------|----------------------------| 

當用戶到達這裏的片段E.2,在以前的片段後面的堆棧是碎片B.2。我當前的實現只是在按HOME按鈕時調用getActivity().onBackPressed(),用戶將簡單地返回到片段B.2。 這對用戶來說沒有意義,所以我想實現一個系統,使用戶現在可以使用Fragment E(即使Fragment B.2是後堆棧中的前一個片段)。

我的直接想法是引用片段,該片段應該像後面堆棧中的前一個片段一樣,在每個片段內部起作用。 片段B.2會參考片段B,片段E.2會參考片段E等。當按下HOME按鈕時 我會啓動被引用爲前一片段的片段。我辯論這個解決方案,但很快意識到這可能會變得很複雜,關於後退堆棧,更不用說它聽起來非常笨拙。

是否有智能的方法來實現這種行爲?

+0

如果他按下當前實現(getActivity()。onBackPressed())的HOME按鈕,那是什麼意思? BackPressed與家庭不同.. – 2013-03-01 17:09:08

+0

感謝您的反饋。我更新了這篇文章,澄清了我的意思..我當前的實現是在主頁按鈕被按下時手動調用onBackPressed()方法,這會導致意外的行爲。 – 2013-03-01 21:41:04

回答

0

簡短回答:你的設計是錯誤的 在主鍵上模擬一個背按鍵是瘋狂的,並將用戶帶到他從未去過的屏幕上只是瘋了!

長答案:如果你想達到這樣的瘋狂:因爲你不能在後面的堆棧中插入一個片段,我會在選中的ActionBar項目上打開片段E,然後自動啓動片段E.2?

其他解決方案:如果片段E.2從ActionBar打開,您也可以從片段E.2的onPause()中啓動片段E.

+0

我知道模擬背部按壓的實現是不夠的,這是我作爲一個臨時解決方案。我對提示如何更好地實現主頁按鈕功能非常感興趣。據我所知,它應該讓用戶從他目前的位置上升一級。我怎樣才能在我的應用程序中指定不同的級別,然後讓主頁按鈕像這樣工作?再次感謝您的輸入。 – 2013-03-02 11:26:29

+0

我提出的兩個想法呢? – 2013-03-02 11:30:02

+0

對不起,我的上一條評論提交得太快了。現在做了一些編輯。而不是實施「瘋狂」的解決方法,我想進行一些調整並實現更好的設計:-) – 2013-03-02 11:35:49