我们如何与所有活动共享Drawer
?
在列表器中:onNavigationItemSelected
setNavigationItemSelectedListener
我们可以获取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
,然后从那里扩展所有活动吗?
遵循这个关于支持设计库的新指南
我用这个SO答案找到了答案
扩展是正确的方法。只需以正确的方式覆盖 setContentView...
我在这里也有点困惑。 在找到很少的信息后,我试图扩展我的子类
public class NewActivity extends MainActivity{
...
}
然而,仅凭这一点并没有起到任何作用。 MainActivity
有一个功能齐全的NavigationView
,将导航到每个活动。唯一剩下的就是与每个活动共享它。