在 NavigationDrawer 中动态添加 Fragments
Dynamically add Fragments in NavigationDrawer
我使用的是 android.support:design
库中的 NavigationDrawer
,它运行良好,但现在我已经切换到 mikepenz 的 MaterialDrawer,因为它的功能很明显。但是现在我卡住了。
我想像使用 android.support:design
库一样动态添加 Fragment
,在 android.support:design
库中,我使用 SharedPreferences
,到 add/remove 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
不会改变,这很明显。
请帮助!
该代码看起来与您当前的代码非常相似。
首先构建抽屉,添加一些项目,然后添加一个侦听器。这个侦听器允许你执行你需要的任何功能:
//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
并没有多大关系
我使用的是 android.support:design
库中的 NavigationDrawer
,它运行良好,但现在我已经切换到 mikepenz 的 MaterialDrawer,因为它的功能很明显。但是现在我卡住了。
我想像使用 android.support:design
库一样动态添加 Fragment
,在 android.support:design
库中,我使用 SharedPreferences
,到 add/remove 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
不会改变,这很明显。
请帮助!
该代码看起来与您当前的代码非常相似。
首先构建抽屉,添加一些项目,然后添加一个侦听器。这个侦听器允许你执行你需要的任何功能:
//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