У меня есть NavigationDrawer, работающий на MainActivity. Однако, когда я переключаю Activites, он исчезает

Ниже приведен код, который у меня есть для моего NavigationDrawer. Я думаю, что это связано с тем, что части моего кода являются публичными / частными или защищенными. Однако я не уверен. Любая помощь будет принята с благодарностью.

    public class MainActivity extends AppCompatActivity
            implements NavigationView.OnNavigationItemSelectedListener {

        @Override
        protected void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.activity_main);
            Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar);
            setSupportActionBar(toolbar);

            FloatingActionButton fab = (FloatingActionButton) findViewById(R.id.fab);
            fab.setOnClickListener(new View.OnClickListener() {
                @Override
                public void onClick(View view) {
                    Snackbar.make(view, "Replace with your own action", Snackbar.LENGTH_LONG)
                            .setAction("Action", null).show();
                }
            });

            DrawerLayout drawer = (DrawerLayout) findViewById(R.id.drawer_layout);
            ActionBarDrawerToggle toggle = new ActionBarDrawerToggle(
                    this, drawer, toolbar, R.string.navigation_drawer_open, R.string.navigation_drawer_close);
            drawer.setDrawerListener(toggle);
            toggle.syncState();

            NavigationView navigationView = (NavigationView) findViewById(R.id.nav_view);
            navigationView.setNavigationItemSelectedListener(this);
        }

        @Override
        public void onBackPressed() {
            DrawerLayout drawer = (DrawerLayout) findViewById(R.id.drawer_layout);
            if (drawer.isDrawerOpen(GravityCompat.START)) {
                drawer.closeDrawer(GravityCompat.START);
            } else {
                super.onBackPressed();
            }
        }

        @Override
        public boolean onCreateOptionsMenu(Menu menu) {
            // Inflate the menu; this adds items to the action bar if it is present.
            getMenuInflater().inflate(R.menu.main, menu);
            return true;
        }

        @Override
        public boolean onOptionsItemSelected(MenuItem item) {
            // Handle action bar item clicks here. The action bar will
            // automatically handle clicks on the Home/Up button, so long
            // as you specify a parent activity in AndroidManifest.xml.
            int id = item.getItemId();

            //noinspection SimplifiableIfStatement
            if (id == R.id.action_settings) {
                return true;
            }

            return super.onOptionsItemSelected(item);
        }

        public boolean onNavigationItemSelected(MenuItem item) {
            // Handle navigation view item clicks here.
            switch(item.getItemId()){
                case R.id.my_account:
                    //Do code here
                    break;
                case R.id.nav_news:
                    //Do code here
                    break;
                case R.id.nav_live:
                    //Do code here
                    break;
                case R.id.nav_media:
                    Intent intent=new Intent(MainActivity.this,activity_main_media.class);
                    startActivity(intent);
                    break;
                case R.id.nav_calendar:
                    //Do code here
                    break;
                case R.id.nav_results:
                    //Do code here
                    break;
                case R.id.nav_about:
                    //Do code here
                    break;
                case R.id.nav_shop:
                    //Do code here
                    break;
                case R.id.nav_social_media:
                    //Do code here
                    break;
                case R.id.nav_fanzone:
                    //Do code here
                    break;

            }

            DrawerLayout drawer = (DrawerLayout) findViewById(R.id.drawer_layout);
            drawer.closeDrawer(GravityCompat.START);
            return true;
        }


    }

1 ответ

Навигационный ящик является частью актвития. Когда вы переключаете активность, это нормально, чтобы потерять navbar. Вам нужно использовать фрагмент вместо активности. Вот документация.

Однако, если вы все еще хотите использовать активность для каждого элемента на панели навигации, вам лучше взглянуть здесь

Другие вопросы по тегам