Sharing NavigationView with all the Activities?
Asked Answered
L

2

9

How do we share Drawer with all the activities?

In the lister: onNavigationItemSelected of setNavigationItemSelectedListener we can get the id and navigate to it. What I am looking for is something like this:

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;
        ...
        }
        ...

I know I can make all the menuItems add/replace Fragment, but then handling fragments and memory management is a big pain.

Instead I want each menuItem select/click to invoke Activity. i.e. each MainMenuItem to have Activity and those will hold fragments with complex layouts.

All I want to do is have each main menu item be an Activity instead of a Fragment.

And all these activities can share same DrawerNavigation.

Is this the recommended way? Or do we always add Fragments for NavigationDrawer item clicks??

Should I add NavigationView to BaseActivity and then extend all activities from there??

Following this new guide about Support Design lib

Lohman answered 13/6, 2015 at 18:50 Comment(1)
yes, you should "add NavigationView to BaseActivity and then extend all activities from there"Reverberatory
L
2

I found the answer using this SO answer

Extending is the right way. Just override setContentView in the right way...

Lohman answered 8/9, 2015 at 12:29 Comment(0)
U
0

I am a bit confused here as well. After finding very little information on this I tried to extend my subclass

public class NewActivity extends MainActivity{
     ...
}

However, this alone didn't do anything. the MainActivity has a fully functioning NavigationView that will navigate to each activity..Only thing that is left is sharing it with each activity.

Umiak answered 20/6, 2015 at 19:52 Comment(2)
I too added the Navigating code in BaseActivity, but then something feels wrong. As each activity that extends BaseActivity, will have redundant code and each Activity will be processing this information. I might be wrong on this but is this the only way out?Lohman
Parent activity should implement NavigationView.OnNavigationItemSelectedListener interface, so that child activities will be inheriting the menu navigation functionality of public boolean onNavigationItemSelected(MenuItem item) method.Detradetract

© 2022 - 2024 — McMap. All rights reserved.