Форум программистов, компьютерный форум CyberForum.ru

Программирование Android

Войти
Регистрация
Восстановить пароль
 
contedevel
57 / 55 / 8
Регистрация: 07.10.2012
Сообщений: 589
#1

Case не работает с константами - Android

14.10.2015, 03:49. Просмотров 181. Ответов 3
Метки нет (Все метки)

Здравствуйте!
Объясните, пожалуйста, почему так происходит?!
Это код не работает (ни один из вариантов не выбирается):
Кликните здесь для просмотра всего текста
Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
public class NavigatorFragment extends AutoSubscribingFragment {
    public static final int ACTION_SUBJECTS_ID     = Integer.MAX_VALUE;
    public static final int ACTION_TEACHERS_ID     = Integer.MAX_VALUE - 1;
    public static final int ACTION_TIMETABLES_ID   = Integer.MAX_VALUE - 2;
    public static final int ACTION_ABOUT_ID        = Integer.MAX_VALUE - 3;
 
    @Override
    public View onCreateView(LayoutInflater inflater, ViewGroup container,
                             Bundle savedInstanceState) {
        //bla-bla-bla
        view.setNavigationItemSelectedListener(new NavigationView.OnNavigationItemSelectedListener() {
            @Override
            public boolean onNavigationItemSelected(MenuItem menuItem) {
                final int id = menuItem.getItemId();
 
                if (menuItem.getGroupId() == R.id.timetable_menu) {
                    //bla-bla-bla
                } else {
 
                    switch (id) {
                        case ACTION_SUBJECTS_ID:
                            //bla-bla-bla
                            break;
 
                        case ACTION_TEACHERS_ID:
                            //bla-bla-bla
                            break;
 
                        case ACTION_TIMETABLES_ID:
                            //bla-bla-bla
                            break;
 
                        case ACTION_ABOUT_ID:
                            //bla-bla-bla
                            break;
                    }
                }
 
                return false;
            }
        });
 
        return view;
    }
}


Этот же код, но с if-else работает:
Кликните здесь для просмотра всего текста
Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
public class NavigatorFragment extends AutoSubscribingFragment {
    private static final String TAG = NavigatorFragment.class.getSimpleName();
    public static final int ACTION_SUBJECTS_ID     = Integer.MAX_VALUE;
    public static final int ACTION_TEACHERS_ID     = Integer.MAX_VALUE - 1;
    public static final int ACTION_TIMETABLES_ID   = Integer.MAX_VALUE - 2;
    public static final int ACTION_ABOUT_ID        = Integer.MAX_VALUE - 3;
 
    @Override
    public View onCreateView(LayoutInflater inflater, ViewGroup container,
                             Bundle savedInstanceState) {
        //bla-bla-bla
        view.setNavigationItemSelectedListener(new NavigationView.OnNavigationItemSelectedListener() {
            @Override
            public boolean onNavigationItemSelected(MenuItem menuItem) {
                final int id = menuItem.getItemId();
 
                if (menuItem.getGroupId() == R.id.timetable_menu) {
                    //bla-bla-bla
                } else if (id == ACTION_SUBJECTS_ID) {
                        //bla-bla-bla
                    } else if (id == ACTION_TEACHERS_ID) {
                        //bla-bla-bla
                    } else if (id == ACTION_TIMETABLES_ID) {
                        //bla-bla-bla
                    } else if (id == ACTION_ABOUT_ID) {
                        //bla-bla-bla
                    }
 
                return false;
            }
        });
    }
}


Бред какой-то или я что-то не знаю об этом операторе.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
14.10.2015, 03:49     Case не работает с константами
Посмотрите здесь:

Android Grow heap (frag case) to 54 MB
Работает в Eclipce но не работает на телефоне Android
java 1.7 eclipse switch/case пичаль Android
Android Не открывает картинку через switch case

Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Valakin
430 / 96 / 15
Регистрация: 21.02.2015
Сообщений: 724
14.10.2015, 08:07     Case не работает с константами #2
То же такое встречал, case не срабатывал (хотя условие выполнялось), и там не было констант, не понятно почему.
Armagedo
208 / 208 / 60
Регистрация: 22.08.2014
Сообщений: 644
14.10.2015, 17:48     Case не работает с константами #3
Хм...странно.
Вот прогоняем и работает
https://ideone.com/CHoIWr
contedevel
57 / 55 / 8
Регистрация: 07.10.2012
Сообщений: 589
15.10.2015, 04:05  [ТС]     Case не работает с константами #4
Цитата Сообщение от Armagedo Посмотреть сообщение
Вот прогоняем и работает
Да, я догадываюсь, что код верный. И просто в джава такого ни разу не было, но при компиляции под андройд иногда бывает, что код со свитчем не выполняется, хотя должен, ошибка такая не только у меня была.
Yandex
Объявления
15.10.2015, 04:05     Case не работает с константами
Ответ Создать тему
Опции темы

Текущее время: 18:09. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru