我試圖找出實現「祖先」和「時間」導航(利用向上按鈕和後退按鈕)的最佳方式,正在努力。Android - 使用ViewPager&Fragments進行時間和祖先導航
目前,用戶呈現一個viewpager,並且可以在三個主要片段(ArtistMain,AlbumMain和SongMain)之間進行頁面。在該視圖中選擇一個項目後,會發生片段事務,並且viewpager會從視圖中移出,並由新片段(AlbumSub,Songsub或player,取決於用戶來自何處)替換。用戶可以進一步瀏覽,直到選擇一首歌曲,然後將它們帶到「播放器」屏幕。
我想問的是:如何實現所有這些條件導航?
我對android和編程一般都比較陌生,我似乎無法想出一個有效的方法來實現這一點。目前,隨着每個片段進入視圖,應用程序正在檢查用戶剛剛從哪裏來,然後確定應該在用戶回到家還是在家時調用。這意味着我有一個像「fromArtistMain」,「fromAlbumSub」這樣的布爾值,並且我正在檢查諸如「fromSongSub & & fromPlayer」之類的東西......這一切都變成了一團糟。
我畫了一張圖(在油漆中,對不起!!),來描述我試圖實現的導航。黃色代表'上'按鈕按下,紅色代表'後退'按鈕按下,藍色代表正常導航。綠色箭頭是爲了表示視圖分頁:
任何意見是值得歡迎的。這可能需要一些非常簡單的東西,我只是忽略了。
謝謝你的時間。
編輯:
我已經加入片段返回堆棧,並使用popBackStack()調用,問題是,彈出返回堆棧不一定在每種情況下的正確選擇。
我目前得到了一大堆代碼,試圖確定一個事務是否應該添加到第一個位置。
請考慮以下內容: 用戶從'SongMain'中直接選擇一首歌曲,並將其帶到'播放器'。現在使用主頁按鈕(在我的腦海中),將用戶帶到SongSub(所選歌曲所屬專輯中的歌曲列表)。現在,如果用戶再次導航,它們將被帶到'AlbumSub',該藝術家的專輯列表。這是一個片段交易,但增加到後臺將意味着用戶在後退時會被降低一級(我認爲這是意想不到的)。因此,在這種情況下,我不會將這個特定的事務添加到後臺堆棧 - 看起來很好,但是有不少情況,並且在需要進入和退出可見性的頂部的viewpager中,代碼變得非常真實亂。
所有這一切都意味着一大堆的條件語句確定該用戶來自和路徑他們採取到那裏的..
難道是明智的,有一幫在主機活動布爾其中獲得一組取決於用戶導航的位置,然後檢查這些布爾值以查看是否應該將事務添加到疊加中?這是我已有的東西,但它看起來效率很低。
感謝您的回覆。請參閱我的編輯 - 這並沒有真正回答我的問題(我已經在使用fragmentManager堆棧)。 –
編輯我的答案。 – Graeme
感謝您的回答。 –