0

私はライブラリNavigationDrawerから使用していましたが、うまくいきましたが、明らかな機能があるため、mikepenz のMaterialDrawerに切り替えました。しかし今、私は立ち往生しています。android.support:design

ライブラリでFragment行ったように動的に追加したい、ライブラリで、次のような設定を追加/削除するために使用しました:android.support:designandroid.support:designSharedPreferencesFragments

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

しかし、これらのステートメントは、を使用してフラグメントを追加するのには役立ちませんSharedPreferencesSharedPreferences上記のステートメントを試してFragmentも変わらず、これは非常に明白です。

助けてください!

4

1 に答える 1

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これは、一般的にはあまり関係がなく、 Fragmentsとも関係ありません。

于 2016-07-19T06:09:32.897 に答える