Навигационный ящик имеет странное поведение - PullRequest
0 голосов
/ 18 февраля 2019

Так что моя ситуация в том, что я правильно реализовал навигационный ящик (так сказать, он отображается правильно и вызывает метод (странным образом, но срабатывает)), но он действует странно, и я не знаю, что ещеДелай, но спрашивай, ты пишешь!

Как только я начал привязывать методы к пунктам меню (параметрам) ящика, я начал замечать странное поведение.Позвольте мне сначала объяснить словами:

Пусть это будет фиктивное меню:

This is how menu looks in real app

Хорошо, вы видитепорядок идет: домой - история - избранное - выход из системы

Пока я реализовал историю и избранное, вот поведение, которое я получаю:

  1. Если я вызову историю, это откроет действиеправильно и отображать данные
  2. Если я позвоню в избранное, я открою ИСТОРИЮ ПЕРВЫМ, затем ЛЮБИМЫЙ ВТОРОЙ (я вижу это, потому что, когда я нажимаю назад, он закрывает избранное, открывает историю)
  3. Я добавилфиктивная активность в качестве третьей опции меню (не отображается на рис.), и я получаю то же поведение, но на этот раз она открывает Историю - Избранное - Пустышка, если я нажимаю на фиктивную активность.

Еще одна вещь передопубликовать код, как я это реализовал.Давайте возьмем 2 моих действия и приведем пример в реальном времени (все в одном цикле).1) С домашней страницы я пытаюсь использовать ящик и вызывать историю / фаворит, он работает отлично, я вхожу в поиск, я пытаюсь использовать совершенство истории / фаворита выдвижного ящика, я нажимаю назад, чтобы вернуться к основному виду деятельности (домой).история / избранное и puuf это больше не работает ... есть идеи, если это связано или просто отдельная проблема для решения?

Реализация:

final NavigationView navigationView = findViewById(R.id.nav_view);
navigationView.setNavigationItemSelectedListener(
    new NavigationView.OnNavigationItemSelectedListener() {
        @Override
        public boolean onNavigationItemSelected(MenuItem menuItem) {
            // set item as selected to persist highlight
            menuItem.setChecked(true);
            // close drawer when item is tapped

            switch (menuItem.getItemId()) {

                case R.id.nav_home: {
                    if (checkInternetConnection(getApplicationContext())) {
                        Log.i(LOG_TAG, "PROVJERA NETA  POVEZAN");
                        start_loader();
                    } else {
                        mEmptyStateTextView.setText("Cannot connect to network, please check your network status and try again.");
                        // Clear the adapter of previous earthquake data

                    }
                }
                case R.id.nav_history: {
                    pozoviHistory(null);
                }
                case R.id.nav_favourite: {
                    pozoviFavorites();
                }

            }


            mDrawerLayout.closeDrawers();

            // Add code here to update the UI based on the item selected
            // For example, swap UI fragments here

            return true;
        }
    }
);

mDrawerLayout.addDrawerListener(
    new DrawerLayout.DrawerListener() {
        @Override
        public void onDrawerSlide(View drawerView, float slideOffset) {
            // Respond when the drawer's position changes
        }

        @Override
        public void onDrawerOpened(View drawerView) {
            // Respond when the drawer is opened

        }

        @Override
        public void onDrawerClosed(View drawerView) {
            // Respond when the drawer is closed
            navigationView.getMenu().getItem(0).setChecked(true);

        }

        @Override
        public void onDrawerStateChanged(int newState) {
            // Respond when the drawer motion state changes
        }
    }
);

****** РЕДАКТИРОВАТЬ ********

Хорошо, ответьте ниже, добавив разрыв;Для каждого случая решается вопрос об открытии всего.Мне удалось найти больше симптомов, заставляющих ящик действовать глупо.

Итак, действие, которое я делаю, заставляет ящик действовать глупо: - У меня внутри активности поток, который выполняет http-запрос и запускаетсямедиа-плейер.- Как только нить закончена через прослушиватель, который я добавил, я начинаю воспроизведение медиапроигрывателя - Как только он инициализируется, я надуваю свой макет неким макетом, который представляет медиапроигрыватель (может ли это быть проблемой создания заглушек?)-влево (для закрытия) не работает, но нажатие за пределами ящика (на макете активности) обычно закрывает его

Вот как я раздуваю:

  DrawerLayout myLayout = (DrawerLayout) findViewById(R.id.cili_test);
                View itemInfo1 = getLayoutInflater().inflate(R.layout.player2, myLayout, true);

1 Ответ

0 голосов
/ 18 февраля 2019

Вам нужно добавить break; в ваш коммутатор

Как это:

switch (menuItem.getItemId()) {

            case R.id.nav_home: {
                if (checkInternetConnection(getApplicationContext())) {
                    Log.i(LOG_TAG, "PROVJERA NETA  POVEZAN");
                    start_loader();
                } else {
                    mEmptyStateTextView.setText("Cannot connect to network, please check your network status and try again.");
                    // Clear the adapter of previous earthquake data

                }
                break;
            }
            case R.id.nav_history: {
                pozoviHistory(null);
                break;
            }
            case R.id.nav_favourite: {
                pozoviFavorites();
                break;
            }

        }
...