0

Я использовал NavigationDrawer из библиотеки android.support:design, и все получилось отлично, но теперь я переключился на MaterialDrawer на mikepenz, благодаря очевидным функциям. Но теперь я застрял.Динамически добавлять фрагменты в NavigationDrawer

Я хочу добавить 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 не изменится, и это вполне очевидно.

ПОМОГИТЕ!

ответ

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 s хранит данные в вашем приложении. Это не имеет особого отношения к MaterialDrawer вообще, ни с Fragment s

+0

В основном я использую SharedPreferences для заполнения навигационного ящика. –

Смежные вопросы