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

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

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

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

14.10.2015, 03:49. Просмотров 201. Ответов 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;
            }
        });
    }
}


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

замена switch.case константами класса - PHP ООП
есть папка lang. в ней хранятся файлы rus.php, eng.php и тд. Содержимое их выглядит примерно так: rus.php class LANG{ static...

Почему case работает только с выражениями, и не работает с функциями? - Lazarus
и как быть например если хочу действовоть в зависимоти от результатов вызова функции case MyFunc(i) of 3: ...; 4: ...; default;...

С оператором Case не работает, с If работает - Delphi
Создал порядковый тип данных: Type Sector= set of 1..5; И переменную, присваивающую эти цифры: var PointIn: Sector;

Не работает case - Ruby
Напишите программу, которая печатает название месяца по порядковому номеру. У меня почему-то не выводятся названия после нажатия цифр. ...

Не работает case - Delphi
При выборе элемента из Combobox едит должен заполниться соответствующим текстом, однако этого не происходит. Что сделать? Case...

Не работает Case на PHP - PHP
Есть файл index.html с таким содержимым: <html> <head> <title>Информация</title> </head> <body> <h1>Введите ваше...

Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Valakin
431 / 97 / 15
Регистрация: 21.02.2015
Сообщений: 731
14.10.2015, 08:07 #2
То же такое встречал, case не срабатывал (хотя условие выполнялось), и там не было констант, не понятно почему.
0
Armagedo
208 / 208 / 60
Регистрация: 22.08.2014
Сообщений: 644
14.10.2015, 17:48 #3
Хм...странно.
Вот прогоняем и работает
https://ideone.com/CHoIWr
0
contedevel
57 / 55 / 8
Регистрация: 07.10.2012
Сообщений: 598
15.10.2015, 04:05  [ТС] #4
Цитата Сообщение от Armagedo Посмотреть сообщение
Вот прогоняем и работает
Да, я догадываюсь, что код верный. И просто в джава такого ни разу не было, но при компиляции под андройд иногда бывает, что код со свитчем не выполняется, хотя должен, ошибка такая не только у меня была.
0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
15.10.2015, 04:05
Привет! Вот еще темы с ответами:

почему не работает case? - JavaScript
Собственно проблема обозначена в заголовке темы. не проверяется двойное условие var crow = prompt("Укажите число ворон",""); ...

Не работает case в массиве! - Delphi
Почему так неработает? var mass: Array of string; begin mass:= 'C'; mass:= 'О'; mass:= 'К'; case mass of...

Не работает Select Case - C# ASP.NET
Всем привет! Нужно реализовать возможность указания диапазона в условиях Select Case'a, т.е. что вроде: Select Case intSum Case...

Как работает Case? - Java SE
import java.util.Calendar; public class HelloWord { public static void main(String args) { Calendar c = Calendar.getInstance(); ...


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

Или воспользуйтесь поиском по форуму:
Yandex
Объявления
15.10.2015, 04:05
Ответ Создать тему
Опции темы

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