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

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

Войти
Регистрация
Восстановить пароль
 
 
NOSC
43 / 43 / 3
Регистрация: 10.10.2013
Сообщений: 297
#1

setBackgroundResourc из соседнего класса - Программирование Android

12.11.2013, 12:13. Просмотров 661. Ответов 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 при нажатии разных кнопок

СПасибо
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
12.11.2013, 12:13     setBackgroundResourc из соседнего класса
Посмотрите здесь:

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

Вызов класса из класса - Программирование Android
Здравствуйте есть класса Session_stud: public class Session_stud { public static class kurt extends AsyncTask<String, Void,...

отображение кнопки из соседнего класса - JavaFX
Доброго времени суток, может подскажете как вывести кнопку на экран ? нужен именно такой подход а не факт рисования кнопки. import...

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Как тогда делают люди если все таки надо сделать глобальные переменные? Возьмем, например, имя пользователя или домашний каталог. Каждый раз когда мне надо его использовать в разных активити, надо писать что-то типа
Java
1
getExternalFilesDir(Environment.DIRECTORY_PICTURES).toString() + "/";
и присваивать какой-то переменной. Не проще ли при запуске приложения один раз записать результат куда-то и все?
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
13.11.2013, 12:36     setBackgroundResourc из соседнего класса
Еще ссылки по теме:

С соседнего <tr> удалить элемент - jQuery
Всем здрасте, каким образом можно распознать и удалить input с соседнего ( их ) &lt;tr&gt;&lt;/tr&gt; ? &lt;tr&gt; &lt;td...

Запрос SQL из соседнего листа - MS Excel
Здравствуйте! У меня возникла такая идея, выгружать из листа с основной БД строки по определенным критериям. Вообщем в MS Query был написан...

Заполнение столбца до уровня соседнего - VBA
Подскажите, как в excel заполнить один столбец текстовыми данными (скажем &quot;текстПоля&quot;) до того уровня, где кончаются данные в контрольном...

Обращение к форме соседнего фрейма - JavaScript
Добрый вечер. Подскажите пожалуйста как обратиться из одного фрейма к форме другого. В сети много про это написано, но ничего не работает....

Maven. Jar из соседнего модуля - Java
Есть проект A, который содержит модули B и C. Что нужно сделать: с помощью maven подключить в модуль C jar-файл, который получается при...


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

Или воспользуйтесь поиском по форуму:
V0v1k
1158 / 982 / 1
Регистрация: 28.06.2012
Сообщений: 3,462
13.11.2013, 12:36     setBackgroundResourc из соседнего класса #23
Цитата Сообщение от verylazy Посмотреть сообщение
передавать необходимые ссылки в конструктор активити. Обычно это ссылка на другую активити.
код не должен получать(или иметь доступ) больше, чем ему нужно для роботы.

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

Цитата Сообщение от verylazy Посмотреть сообщение
имя пользователя или домашний каталог
да, подобные штуки можно засовывать в какой-нибудь класс Constants с модификатором final и их никто не сможет переопределить и использовать для других целей. это не то же самое что использовать глобальные переменные для транспортировки данных.
Yandex
Объявления
13.11.2013, 12:36     setBackgroundResourc из соседнего класса
Ответ Создать тему
Опции темы

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