简体   繁体   English

导航抽屉嵌套片段

[英]navigation drawer nested fragments

I've tried almost everything but nothing seems to work. 我已经尝试了几乎所有内容,但似乎没有任何效果。 I have a navigation drawer with these fragments, say: A - viewpager B - listview C - listview Now in B and C, listview are clickable items with each having their own fragments. 我有一个带有这些片段的导航抽屉,例如:A-viewpager B-listview C-listview现在在B和C中,listview是可单击的项目,每个项目都有自己的片段。 So ListViewA has a fragment, ListViewB has a fragment. 因此,ListViewA有一个片段,ListViewB有一个片段。 I want proper back navigation. 我想要正确的后退导航。 This is how I'm doing it, when initializing the navigation drawer: 初始化导航抽屉时,这就是我的操作方式:

Fragment fragment = getHomeFragment();
                FragmentTransaction fragmentTransaction = getSupportFragmentManager().beginTransaction();
                fragmentTransaction.setCustomAnimations(android.R.anim.fade_in,
                        android.R.anim.fade_out);
                fragmentTransaction.replace(R.id.frame, fragment, CURRENT_TAG);
                fragmentTransaction.commit();

And when choosing an option from listview: 当从列表视图中选择一个选项时:

final FragmentTransaction ft = getFragmentManager().beginTransaction();
                ft.setCustomAnimations(android.R.anim.fade_in,
                        android.R.anim.fade_out);
                ft.replace(R.id.frame, new FragmentB(),"HubSettings");
                ft.addToBackStack(null);
                ft.commit();

If I put addtoBackStack() in both transactions, back navigation works fine but navigation drawer title is not being set properly. 如果我在两个事务中都添加了addtoBackStack(),则后向导航可以正常工作,但是导航抽屉标题设置不正确。 I want to disable back button and force changing fragments from navigation drawer so that action bar title is set properly. 我想禁用后退按钮并强制更改导航抽屉中的片段,以便正确设置操作栏标题。 How do I disable back button when it comes to CFragment? 当涉及CFragment时,如何禁用后退按钮?

One can go from menu like: Navigation Drawer->B Fragment->Listview option 1 Fragment Pressing Back -> Back to B Fragment -> Disable Back Button 可以从以下菜单中进行选择:导航抽屉-> B片段->列表视图选项1片段按下 Back-> Back to B Fragment-> Disable Back Button

Just override onBackPressed in your Activity which contains the fragments like this: 只需重写onBackPressed中的onBackPressed ,其中包含如下片段:

@Override
public void onBackPressed() {

    int count = getSupportFragmentManager().getBackStackEntryCount();       

    if (count > 0) {
        getSupportFragmentManager().popBackStack();
        updateDrawerToggle();            
    }

}

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM