How to get items in Navigation Drawer to change view

╄→гoц情女王★ 提交于 2019-12-03 22:25:40

You will need to setup a setOnItemClickListener on your drawerLayout(the id of the listview in your xml file)

Example:

    drawerLayout.setOnItemClickListener(new ListView.onItemClickListener){
    @Override
            public void onItemClick(AdapterView<?> parent, View view, int position,
                    long id) {

                displayView(position);
            }}

    private void displayView(int position) {

            switch (position) {
            case 0:
                fragment = new FirstFragment();
                break;
            case 1:
                fragment = new SecondFragment();
                break;
if (fragment != null) {
            FragmentManager fragmentManager = getFragmentManager();
            fragmentManager.beginTransaction()
                    .replace(R.id.frame_layout_id, fragment).commit(); //

And you need to make separate java class for the FirstFragment and SecondFragment with whatever content you need.

Dat30

Well, I'll left this here in case someone needs help switching Fragments in an "Android Studio" Navigation Drawer project

The answer proposed by user2511882, uses the following:

fragment = new FirstFragment();

But the code generated by "Android Studio" uses:

fragment =  FirstFragment.newInstance();

(which is a better practice; see why HERE)

That's why his answer doesn't work for your project.

In your case, you have to use something like:

  @Override
    public void onNavigationDrawerItemSelected(int position) {

        Fragment fragment = null;
        switch (position){
            case 0:
                fragment = FirstFragment.newInstance(position + 1);
                break;
            case 1:
                fragment = SecondFragment.newInstance(position + 1);
                break;

        }
        FragmentManager fragmentManager = getSupportFragmentManager();
        fragmentManager.beginTransaction()
                .replace(R.id.container, fragment)
                .commit();
    }

In "Android Studio" it is also a good practice to read the comments and "TODOS" incorporated in the auto generated code.

best regards.

get Item position in navigation view you can set first 0th position menu default by

navigationView.getMenu().getItem(0); // default selected menu

displayview(navigationView.getMenu().getItem(0));

private void setupDrawerContent(final NavigationView navigationView) {
        navigationView.setNavigationItemSelectedListener(
                new NavigationView.OnNavigationItemSelectedListener() {
                    @Override
                    public boolean onNavigationItemSelected(MenuItem menuItem) {
                        displayView(menuItem);
                        return true;
                    }
                });
    }


 public void displayView(MenuItem menuItem) {
        Fragment fragment = null;
        switch (menuItem.getItemId()) {
            case R.id.nav_home:
               // fragment = new CheeseListFragment();
                break;
            case R.id.nav_messages:
                fragment = new MessageFragment();
                break;
        }

        if(fragment != null) {
            getSupportFragmentManager().beginTransaction()
                    .add(R.id.container, fragment)
                    .commit();

            menuItem.setChecked(true);
            mDrawerLayout.closeDrawers();
        }
    }
Mansukh Ahir

get Item position in navigation view you can set first 0th position menu default by

navigationView.getMenu().getItem(0); // default selected menu
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!