[英]Fragment Navigation with Navigation Drawer
我的Android應用實際上有一個小問題。
我的應用程序包含一個導航抽屜,用於在應用程序內部進行導航。 例如
導航抽屜:
當應用啟動時,我將加載概述片段。 如果用戶單擊其他項目,我將使用以下方式更改片段:
final FragmentTransaction transaction = getSupportFragmentManager().beginTransaction();
transaction.replace(R.id.frame_container, fragment, TAG);
transaction.addToBackStack(null);
transaction.commit();
現在的問題是,例如,當用戶從1> 2> 4> 3切換並按下返回鍵時,這只會使他返回一個片段。 3> 4> 2> 1
所以我添加了代碼,這將使他回到每個Backpress的Fragment 1。
public boolean onKeyDown(int keyCode, KeyEvent event) {
int exit = 0;
if (keyCode == KeyEvent.KEYCODE_BACK) {
getFragmentManager().popBackStack();
FragmentManager fm = getSupportFragmentManager();
Fragment fragment = new Overview();
fm.beginTransaction().add(R.id.frame_container, fragment).addToBackStack("fragBack").commit();
return false;
}
return false;
}
好的,首先還不錯,但是現在我在“更深層次”上添加了更多片段,但是在回壓時它們不應該回到片段1。
例如
4.1詳細信息(返回鍵返回到片段4。填充)<4.1.1更多詳細信息(返回鍵返回到片段4.1)。
如果有人有一個想法,我將如何在我的應用程序中處理導航,那就太好了。
格爾茨
您的代碼是正確的,需要更改邏輯。 每當您離開NavigationDrawer時,首先都要使用此代碼清除堆棧中的所有片段
private void clearBackStack() {
FragmentManager manager = getSupportFragmentManager();
manager.popBackStackImmediate(null, FragmentManager.POP_BACK_STACK_INCLUSIVE);
}
然后,將相應的selected(1或2或3)片段添加到堆棧中。
private void navigateToFragment(Fragment fragment, String TAG){
FragmentTransaction transaction = getSupportFragmentManager().beginTransaction();
transaction.replace(R.id.frame_container, fragment, TAG);
transaction.addToBackStack(null);
transaction.commit();
}
當您像2-> 2.1-> 2.2那樣深入時,在反壓時您將返回2.2-> 2.1-> 2。 無需覆蓋onKeyDown()方法並再次添加片段
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.