2013-06-23 57 views
3

我的應用在根活動的佈局中使用新的導航抽屜。抽屜中的每個項目都是一個片段(就像示例項目演示的那樣)。但是,我有更深入的導航,並且指南中指出,「如果您的分支特別深,導航到您應用的頂層可能會變得重複且單獨使用Up和Back進行繁瑣。由於導航抽屜可從「 」意味着抽屜應該可以通過從應用程序的任何位置幾乎任何位置的屏幕左側輕掃即可訪問(請參閱播放音樂的示例),而不僅僅是在應用程序中,導航到頂層的速度更快,效率更高根活動。由於我的更深入的導航包括新的活動,而不僅僅是更多的片段堆疊,我如何仍然可以應用我的主導航抽屜,以便在我的應用程序中更快地導航到頂部項目(片段)?深航中的Android導航抽屜

+1

也在所有子活動中包含導航抽屜。 – Lesleh

+1

雖然,我需要複製大量的代碼和佈局才能做到這一點。沒關係;我只是想確保這是做到這一點的最佳方式。 –

回答

0

谷歌在解釋這一個方面絕對做得不好,因爲我花了一段時間才找到它。處理此問題的正確方法是使用FragmentTransactions在現有導航抽屜佈局中添加/替換容器,特別是addToBackStack()方法,以告知Android將其視爲導航事務。

我不得不從他們的文章Providing Proper Back Navigation中把它拼湊在一起,它解釋了它是如何完成碎片的。一個很酷的小技巧就是你不必將碎片互相「添加」,你只需要替換活動的碎片即可。當用戶點擊「返回」時,Android的FragmentManager將彈出交易並將其恢復到之前的狀態。

此外,您可能還需要在您的交易上致電setTransition(int transit),以便像活動一樣進行動畫製作。下面是我在我的項目中使用的例子:

getFragmentManager().beginTransaction() 
        .setTransition(FragmentTransaction.TRANSIT_FRAGMENT_OPEN) 
        .replace(R.id.container, newFragment); 
        .addToBackStack(null); 
        .commit(); 

擊中從這個「後退」將執行相反的動畫,並返回到以前的狀態發生在交易之前。

我知道我遲到了,但希望它可以幫助別人!