【发布时间】:2015-06-13 18:50:25
【问题描述】:
我们如何与所有活动分享Drawer?
在列表器中:setNavigationItemSelectedListener 中的onNavigationItemSelected 我们可以获取id 并导航到它。我正在寻找的是这样的:
private void initDrawerLayout() {
drawerLayout = (DrawerLayout) findViewById(R.id.drawer_layout);
NavigationView navView = (NavigationView) findViewById(R.id.navigation_view);
navView.setNavigationItemSelectedListener(new NavigationView.OnNavigationItemSelectedListener() {
@Override
public boolean onNavigationItemSelected(MenuItem menuItem) {
Intent intent;
int id = menuItem.getItemId();
switch(id) {
case R.id.home:
case R.id.drawer_home:
// call activity instead of adding/replacing fragment
return true;
case R.id.drawer_gallery:
// call activity instead of adding/replacing fragment
intent = new Intent(MainActivity.this, GalleryActivity.class);
startActivity(intent);
return true;
case R.id.drawer_about:
// call activity instead of adding/replacing fragment
intent = new Intent(MainActivity.this, AboutActivity.class);
startActivity(intent);
return true;
...
}
...
我知道我可以让所有menuItems 添加/替换Fragment,但是处理片段和内存管理是一件很痛苦的事情。
相反,我希望每个 menuItem 选择/单击来调用 Activity。即每个MainMenuItem 都有Activity 并且它们将包含具有复杂布局的片段。
我想要做的就是让每个主菜单项都是
Activity而不是Fragment.所有这些活动都可以共享相同的
DrawerNavigation。
这是推荐的方式吗?还是我们总是为NavigationDrawer 项目点击添加Fragments??
我是否应该将NavigationView 添加到BaseActivity,然后从那里扩展所有活动??
【问题讨论】:
-
是的,您应该“将 NavigationView 添加到 BaseActivity,然后从那里扩展所有活动”
标签: android android-intent android-fragments navigationview android-support-design