我有具有以下流的應用:的Android側菜單導航 - 處理片段
的一點是,我們有一個單一Activity
和滑動菜單,從其中用戶可以選擇幾個頂級片段之一(我頂級的意思是當用戶按Back鍵時,應用程序退出)。
從這些片段中,用戶可以導航到其他片段(例如論壇主題 - >主題詳情 - >海報個人資料 - >海報的朋友 - >朋友的個人資料),其中後退鍵預計將用戶返回到保存的前一個片段的狀態(例如恢復滾動位置等)。
在這種情況下,我使用:
void addFragment(Fragment f) {
//add fragment in a transaction, so back key does its thing
getSupportFragmentManager().beginTransaction().addToBackStack(null)
.add(R.id.fragment_container, f).commit();
}
如果用戶打開這些片段的側面菜單並選擇另一個頂級片段,然後將整個背部堆棧將被新的片段會被替換(而當用戶按壓背部,應用程序退出)
在這種情況下,我使用:
void replaceFragment(Fragment f) {
//remove all fragments and add a top-level one
getSupportFragmentManager().popBackStackImmediate(null,
FragmentManager.POP_BACK_STACK_INCLUSIVE);
getSupportFragmentManager().beginTransaction().add(R.id.fragment_container, f).commit();
}
這被認爲是一個良好的導航?在iOS應用程序中,每個頂層片段都會記住它自己的背堆棧,但這似乎是一種矯枉過正的行爲,所以銷燬頂層交換機上的後備堆棧就足夠了。
完全以無用的,但我愛你的圖紙! –