在NavigationDrawer中动态添加片段

时间:2016-07-18 17:26:26

标签: android android-fragments sharedpreferences materialdrawer

我正在使用NavigationDrawer库中的android.support:design,它工作正常,但现在我已经被mikepenz转移到MaterialDrawer,因为它具有明显的功能。但现在我被卡住了。

我想动态添加Fragment,就像我使用android.support:design库一样,android.support:design库,我使用SharedPreferences来添加/删除Fragments像这样的设置:

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();
       }
    }
}

现在我怎样才能对MaterialDrawer做同样的事情?

有很多方法可以通过switch语句或使用类似的方式更改片段:

if (position == 0) {                      
    FragmentTransaction fragmentTransaction = mFragmentManager.beginTransaction();
    fragmentTransaction.replace(R.id.containerView, new fragFragment()).commit();
}

但是这些声明对使用SharedPreferences添加片段没有帮助。如果我在上面的SharedPreferences声明Fragment上尝试{@ 1}}不会发生变化,这很明显。

请帮助!

1 个答案:

答案 0 :(得分:2)

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

首先构建抽屉,添加一些项目,然后添加一个监听器。这个监听器允许你执行你需要的任何功能:

//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();

您可能还有其他一些困惑。 SharedPreference在您的应用程序中存储数据。这与MaterialDrawer一般,与Fragment s

没有多大关系