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

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

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

Ко всем элементам меню применяется последняя иконка - Android

11.10.2015, 03:55. Просмотров 145. Ответов 2
Метки нет (Все метки)

Здравствуйте!

Никак не могу понять из-за чего так происходит... Есть код:
Java
1
2
3
4
5
6
7
8
9
10
11
12
13
for(int i = 0; i < ts.size(); ++i) {
            final Table.Timetable t = ts.get(i);
            final MenuItem item = menu.add(R.id.timetable_menu, Menu.NONE, i, t.getTitle());
            final GradientDrawable icon = (GradientDrawable)ContextCompat.getDrawable(
                    getContext(),
                    R.drawable.sh_filled_circle
            );
            Log.d(TAG, "Address: " + icon);
            icon.setColor(t.getColor());
            Log.d(TAG, "Color: " + t.getColor());
            item.setIcon(icon);
            timetableIds[i] = t.getId();
        }
Где строится меню для NavigationView из библиотеки design. В лог печатаются разные адреса объекта и код цвета тоже разный, но ко всем элементам меню применяется один и тот же цвет. Как будто бы всем элементам назначен один и тот же drawable.

Добавлено через 8 минут
Видимо Android не создает дубликат в памяти, если грузится одна и та же shape, после вызова mutate() заработало.
На метод случайно наткнулся, иначе, чувствую, долго бы еще голову ломал)
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
11.10.2015, 03:55     Ко всем элементам меню применяется последняя иконка
Посмотрите здесь:

Eclipse. Не появляется иконка при инсталляции apk Android
Не применяется тема с Eclipse Android
Android Иконка запуска для приложения Андроид
Android Последняя нажатая кнопка
ActionBar, анимированная иконка меню Android
Для чего применяется класс OAuthConsumer при публикации приложений в твиттере? Android
Android Иконка для программы
Не отображается иконка программы Android
После добавления кластеризации перестали выводиться нужные иконка Android
Android Не отображается иконка в ActionBar
В RadioGroup неактивна последняя кнопка Android
Иконка приложения не изменяется Android

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

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
bastrakov
91 / 91 / 14
Регистрация: 10.10.2015
Сообщений: 307
Записей в блоге: 1
11.10.2015, 19:23     Ко всем элементам меню применяется последняя иконка #2
извините мой тупой вопрос:
а зачем внутри цикла создавать финальные переменные? ну или почему Вы делаете так?
заранее спасибо.
contedevel
57 / 55 / 8
Регистрация: 07.10.2012
Сообщений: 589
11.10.2015, 19:32  [ТС]     Ко всем элементам меню применяется последняя иконка #3
Да, это делать не нужно, в этом коде ни на что не влияет) Просто мне так удобнее контролировать их, чтобы случайно нигде не обнулить или еще что при рефакторинге, а время компиляции мне не критично.
К тому же, если я вижу переменную без файнал, то сразу знаю, что имя объекта где-то присваивается новому или null

Добавлено через 3 минуты
Короче я на Haskell еще пишу, поэтому, наверное привык к неизменяемым ссылкам)
Yandex
Объявления
11.10.2015, 19:32     Ко всем элементам меню применяется последняя иконка
Ответ Создать тему
Опции темы

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