Форум программистов, компьютерный форум, киберфорум
Наши страницы
Программирование Android
Войти
Регистрация
Восстановить пароль
 
 
Рейтинг 5.00/4: Рейтинг темы: голосов - 4, средняя оценка - 5.00
NOSC
43 / 43 / 3
Регистрация: 10.10.2013
Сообщений: 297
1

setBackgroundResourc из соседнего класса

12.11.2013, 12:13. Просмотров 784. Ответов 22
Метки нет (Все метки)

Доброго дня!
Коллеги, подскажите могу ли я сменить фон в layout из другого класса по нажатию кнопки?
Пробовал вот так:
в классе, где надо менять фон обявил переменную
Java
1
public static String s = null;
ниже указал
Java
1
2
RelativeLayout wv = (RelativeLayout)findViewById(R.id.RelativeLayout1);
        wv.setBackgroundResource(s);
На что Еклипсина соответственно ругнулась.

Предпологалось что в другом классе при отработке "слушателя нажати" переменной s дается имя R.drawable.view
Но не получилось

Каким образом мне поменять фон в layout из чужего класса??
По функционалу предполагается разный фон в одной layout при нажатии разных кнопок

СПасибо
0
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
12.11.2013, 12:13
Ответы с готовыми решениями:

Анимация масштабирования и смещения соседнего объекта
Уважаемые форумчане! Подскажите пожалуйста в какую сторону копать? Есть 2...

Заполнения List из соседнего класса
Добрый день, форумчане, помогите разобраться. Буду признателен. Задача: софт...

отображение кнопки из соседнего класса
Доброго времени суток, может подскажете как вывести кнопку на экран ? нужен...

Wi-Fi с соседнего дома
Доброго всем времени суток! Имею интернет в частном доме, организованный...

Bg-color соседнего элемента
как сделать чтобы при наведении на один элемент , менялся цвет фона другого? ...

22
V0v1k
1160 / 984 / 1
Регистрация: 28.06.2012
Сообщений: 3,462
13.11.2013, 00:02 21
verylazy,
Цитата Сообщение от verylazy Посмотреть сообщение
не статик метод, а статик переменная не вижу ничего плохого в таком походе
я для себя вообще сделал класс, назвал его BlackBox и вынес в него необходимые мне глобальные переменные, которые теперь доступны из любой активити
а эти put/get extra удобно использовать когда необходимо передать данные из одного приложения в другое
лично мое мнение, если кто-то аргументированно покажет, что я не прав - скажу спасибо
плохо тем, что активити в вашем случае зависима от других классов, нельзя просто скопипастить ее в другой проект, нужно создавать там такой же BlackBox, в таком же пакете, найти все что использует эта активити в нем и перенести.

а если нужно с третьего проект, который писал другой человек, взять еще одну активити взять?
опять искать подобный класс, который здесь уже по другому называется(например Box) и опять создавать такой же класс и переносить все нужное.
а если там уже есть такой класс с такими же переменными, но они используются для других целей?
даже не заметите при переносе ничего а при выполнении код будет конфликтовать между собой в использовании этих переменных.

знаете что такое система контроля версий?
создадут два программиста глобальные переменные одинаковым именем, но для разных целей и при объединение кода останется только одна переменная и опять конфликт в коде будет.
здесь много подводных камней.

или менять код в этих активитях придется при переносе. но все должно переноситься без изменений.

а если оригинальные версии изменятся и нужно интегрировать изменения? опять таки нельзя просто удалить и скопировать новое, нужны опять танцы с бубном.

скажете что не собираетесь ничего никуда переносить? все равно лучше сразу учиться делать все правильно.

Добавлено через 3 минуты
одно из основных правил ООП: код должен минимально зависеть от другого кода, все должно быть легко-переносимым, легко-изменяемым, легко-заменяемым.

Добавлено через 6 минут
ну и статик переменная останется висеть в памяти даже если уже не нужно, если вы ее не обнулите.

Добавлено через 2 минуты
еще одно правило это минимальная доступность - все должно быть доступно только там, где используется. в идеале.
проекты пишутся множеством людей, и любой может взять и использовать вашу глобальную переменную для своих нужд, она ведь глобальная, и поломать этим ваш код.
2
verylazy
Заблокирован
13.11.2013, 11:09 22
Я со всем этим согласен, не спорю. Долго размышлял над тем, как удобнее передавать параметры и решил что нагляднее и красивее все таки передавать необходимые ссылки в конструктор активити. Обычно это ссылка на другую активити.
Вполне возможно что я мнение поменяю еще не раз, такое уже было

Про систему контроля версий я слышал, но не видел. Мне пока до этих вещей очень и очень далеко.
Мне непонятно вот что - если я беру активити из другого проекта или вообще человека и передаю туда данные через putExtra то либо в этой активити уже должен быть реализован "прием" этих параметров, либо мне все равно придется там что-то переписывать (как-то же надо вытянуть все эти extras).
А если там уже это все реализовано то мне как бы и не остается другого выхода, как передавать туда через putExtra

Как тогда делают люди если все таки надо сделать глобальные переменные? Возьмем, например, имя пользователя или домашний каталог. Каждый раз когда мне надо его использовать в разных активити, надо писать что-то типа
Java
1
getExternalFilesDir(Environment.DIRECTORY_PICTURES).toString() + "/";
и присваивать какой-то переменной. Не проще ли при запуске приложения один раз записать результат куда-то и все?
0
V0v1k
1160 / 984 / 1
Регистрация: 28.06.2012
Сообщений: 3,462
13.11.2013, 12:36 23
Цитата Сообщение от verylazy Посмотреть сообщение
передавать необходимые ссылки в конструктор активити. Обычно это ссылка на другую активити.
код не должен получать(или иметь доступ) больше, чем ему нужно для роботы.

Цитата Сообщение от verylazy Посмотреть сообщение
то либо в этой активити уже должен быть реализован "прием" этих параметров,
да, должен быть реализован, активити не должна лезть черти куда чтобы получить адресуемые ей данные..

Цитата Сообщение от verylazy Посмотреть сообщение
имя пользователя или домашний каталог
да, подобные штуки можно засовывать в какой-нибудь класс Constants с модификатором final и их никто не сможет переопределить и использовать для других целей. это не то же самое что использовать глобальные переменные для транспортировки данных.
1
13.11.2013, 12:36
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
13.11.2013, 12:36

Автозаполнение соседнего поля
Доброго дня суток! Никак не могу решить, скорее всего, легкую задачу. Нужно...

С соседнего <tr> удалить элемент
Всем здрасте, каким образом можно распознать и удалить input с соседнего ( их )...

Отступ от соседнего блока
Здравствуйте. Есть блок в котором четыте блока. Как сделать чтоб каждый из этих...


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

Или воспользуйтесь поиском по форуму:
23
Ответ Создать тему
Опции темы

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