Android 在NavigationDrawer中动态添加片段

Android 在NavigationDrawer中动态添加片段,android,android-fragments,sharedpreferences,materialdrawer,Android,Android Fragments,Sharedpreferences,Materialdrawer,我使用的是安卓系统中的导航抽屉。支持:designlibrary,它工作正常,但现在我改用mikepenz的,因为它有明显的功能。但现在我被卡住了 我想动态添加Fragment,就像我在android中所做的那样。支持:设计library,在android中。支持:设计library,我使用SharedReferences,从如下设置中添加/删除Fragment: mNavigationView.setNavigationItemSelectedListener(new NavigationVi

我使用的是安卓系统中的导航抽屉。支持:designlibrary,它工作正常,但现在我改用mikepenz的,因为它有明显的功能。但现在我被卡住了

我想动态添加
Fragment
,就像我在
android中所做的那样。支持:设计
library,在
android中。支持:设计
library,我使用
SharedReferences
,从如下设置中添加/删除
Fragment

mNavigationView.setNavigationItemSelectedListener(new NavigationView.OnNavigationItemSelectedListener() {
    @Override
    public boolean onNavigationItemSelected(MenuItem menuItem) {
       mDrawerLayout.closeDrawers();
       if (savedPreferences.getBoolean("add_frag", true)) {
             if (menuItem.getTitle() == "frag") {
             FragmentTransaction xfragmentTransaction = mFragmentManager.beginTransaction();
             xfragmentTransaction.replace(R.id.containerView, new fragFragment()).commit();
       }
    }
}
if (position == 0) {                      
    FragmentTransaction fragmentTransaction = mFragmentManager.beginTransaction();
    fragmentTransaction.replace(R.id.containerView, new fragFragment()).commit();
}
现在如何使用
MaterialDrawer

通过
switch
语句或使用类似于以下内容的方法可以更改片段:

mNavigationView.setNavigationItemSelectedListener(new NavigationView.OnNavigationItemSelectedListener() {
    @Override
    public boolean onNavigationItemSelected(MenuItem menuItem) {
       mDrawerLayout.closeDrawers();
       if (savedPreferences.getBoolean("add_frag", true)) {
             if (menuItem.getTitle() == "frag") {
             FragmentTransaction xfragmentTransaction = mFragmentManager.beginTransaction();
             xfragmentTransaction.replace(R.id.containerView, new fragFragment()).commit();
       }
    }
}
if (position == 0) {                      
    FragmentTransaction fragmentTransaction = mFragmentManager.beginTransaction();
    fragmentTransaction.replace(R.id.containerView, new fragFragment()).commit();
}
但这些语句无助于使用
SharedReferences
添加片段。如果我在上面的语句中尝试
SharedPreferences
Fragment
不会改变,这一点非常明显


请帮忙

代码看起来与您当前的代码非常相似

首先,构建抽屉,添加一些项目,并添加一个侦听器。此侦听器允许您执行所需的任何功能:

//Create the drawer
new DrawerBuilder()
    .withActivity(this)
    .withToolbar(toolbar)
    .withAccountHeader(headerResult) //set the AccountHeader we created earlier for the header
    .addDrawerItems(
            new PrimaryDrawerItem().withName("Item 1").withIdentifier(1),
            new PrimaryDrawerItem().withName("Item 2").withIdentifier(2)
    )
    .withOnDrawerItemClickListener(new Drawer.OnDrawerItemClickListener() {
        @Override
        public boolean onItemClick(View view, int position, IDrawerItem drawerItem) {
            if (drawerItem != null) {
                if (drawerItem.getIdentifier() == 1) {
                    //do what you want to do for the first item
                } else if (drawerItem.getIdentifier() == 2) {
                    //do whatever you want to do for the second item
                }
            }

            return false;
        }
    })
    .withSavedInstance(savedInstanceState)
    .build();


你这边可能还有其他一些困惑
SharedReference
s在应用程序中存储数据。一般来说,这与
MaterialDrawer
没有多大关系,也与
Fragment
s

没有多大关系。代码看起来与当前的代码非常相似

首先,构建抽屉,添加一些项目,并添加一个侦听器。此侦听器允许您执行所需的任何功能:

//Create the drawer
new DrawerBuilder()
    .withActivity(this)
    .withToolbar(toolbar)
    .withAccountHeader(headerResult) //set the AccountHeader we created earlier for the header
    .addDrawerItems(
            new PrimaryDrawerItem().withName("Item 1").withIdentifier(1),
            new PrimaryDrawerItem().withName("Item 2").withIdentifier(2)
    )
    .withOnDrawerItemClickListener(new Drawer.OnDrawerItemClickListener() {
        @Override
        public boolean onItemClick(View view, int position, IDrawerItem drawerItem) {
            if (drawerItem != null) {
                if (drawerItem.getIdentifier() == 1) {
                    //do what you want to do for the first item
                } else if (drawerItem.getIdentifier() == 2) {
                    //do whatever you want to do for the second item
                }
            }

            return false;
        }
    })
    .withSavedInstance(savedInstanceState)
    .build();


你这边可能还有其他一些困惑
SharedReference
s在应用程序中存储数据。一般来说,这与
MaterialDrawer
没有多大关系,也与
Fragment
s

基本上,我使用SharedReferences来填充导航抽屉。基本上,我使用SharedReferences来填充导航抽屉。