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

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

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

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

12.11.2013, 12:13. Просмотров 700. Ответов 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
Здравствуйте! Я подобрал для вас темы с ответами на вопрос setBackgroundResourc из соседнего класса (Программирование Android):

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

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

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

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

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

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

22
korsaj
148 / 117 / 9
Регистрация: 16.08.2013
Сообщений: 514
12.11.2013, 14:01 #2
Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
public class MyNewClass extends Activity {
 
    Button btn;
//====================================================================================    
    MyClass(Button btn){        
        this.btn = btn; 
    }
    
//====================================================================================  
    public int setBackground(){
            btn.setBackgroundResource(R.drawable.gray);
    }
}
//====================================================================================
Можно даже обработчик нажатий вынести в другой класс.
0
NOSC
43 / 43 / 3
Регистрация: 10.10.2013
Сообщений: 297
12.11.2013, 15:02  [ТС] #3
Цитата Сообщение от korsaj Посмотреть сообщение
Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
public class MyNewClass extends Activity {
 
    Button btn;
//====================================================================================    
    MyClass(Button btn){        
        this.btn = btn; 
    }
    
//====================================================================================  
    public int setBackground(){
            btn.setBackgroundResource(R.drawable.gray);
    }
}
//====================================================================================
Можно даже обработчик нажатий вынести в другой класс.
Боюсь я не совсем корректно сформулировал вопрос.
Есть layout1 с кнопками и layout2, соответственно класс1 и класс2, рисунок1 и рисунок2.
Мне нужно, чтобы при нажатии кнопки1 в layout1 открывался layout2 с рисунком1 (читать background), а при нажатии кнопки2 в layout1 открывался layout2 с риснком2 в background

Надеюсь так понятней
0
verylazy
Заблокирован
12.11.2013, 15:08 #4
а что значит "открывался layout"?
0
korsaj
148 / 117 / 9
Регистрация: 16.08.2013
Сообщений: 514
12.11.2013, 15:11 #5
А причем здесь другой класс. Вы хотите просто менять layout главного activivty и в зависимости от нажатой кнопки ставить нужный фон?
0
NOSC
43 / 43 / 3
Регистрация: 10.10.2013
Сообщений: 297
12.11.2013, 15:14  [ТС] #6
Цитата Сообщение от verylazy Посмотреть сообщение
а что значит "открывался layout"?
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
public class FirstActivity extends Activity {
 
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_first);
        final Animation animationFadein = AnimationUtils.loadAnimation(this, R.anim.fade_in);       
        final ImageView aa = (ImageView) findViewById(R.id.imageView1);
        aa.setOnClickListener(new OnClickListener() {
             
            public void onClick(View v) {
                // TODO Auto-generated method stub
                WView.s = "file:///more.html";
\\ На этом этапе я хочу установить в activity_second background1
                aa.startAnimation(animationFadein);
                Intent int1 = new Intent(FirstActivity.this, Second.class);
                startActivity(int1);
            }
        });
        final ImageView ab = (ImageView) findViewById(R.id.imageView2);
        ab.setOnClickListener(new OnClickListener() {
             
            public void onClick(View v) {
                // TODO Auto-generated method stub
                WView.s = "file:///android_asset/psichology/women.html";
\\ На этом этапе я хочу установить в activity_second background2
                ab.startAnimation(animationFadein);
                Intent int1 = new Intent(FirstActivity.this, Second.class);
                startActivity(int1);
            }
        });
Комментарии в коде посмотрите. Вроде понятно написал. Могу чего-то не знать или не так изъяснять мысли - уж простите =)
0
korsaj
148 / 117 / 9
Регистрация: 16.08.2013
Сообщений: 514
12.11.2013, 15:18 #7
http://startandroid.ru/ru/uroki/vse-...ju-intent.html
0
verylazy
Заблокирован
12.11.2013, 15:19 #8
Java
1
Intent int1 = new Intent(FirstActivity.this, Second.class);
где-то после этой строки можно передать параметр (имя файла для фона или х.з. что там)
сделать это можно через putExtra, например http://developer.android.com/referen...d.os.Bundle%29
либо сделать статик поле в каком-то классе, которое будет доступно всему приложению и через него уже передавать название фона

имхо
0
NOSC
43 / 43 / 3
Регистрация: 10.10.2013
Сообщений: 297
12.11.2013, 15:23  [ТС] #9
Цитата Сообщение от verylazy Посмотреть сообщение
либо сделать статик поле в каком-то классе, которое будет доступно всему приложению и через него уже передавать название фона
Вот такой вариант предпочтительней, но, как и написал в вопросе:
Java
1
2
3
public static String s = null;
RelativeLayout wv = (RelativeLayout)findViewById(R.id.RelativeLayout1);
        wv.setBackgroundResource(s);

Ругается на переменную s, может она просто не String должна быть? А тогда что, если не String?? Или я не в том направлении мыслю?
0
V0v1k
1159 / 983 / 1
Регистрация: 28.06.2012
Сообщений: 3,462
12.11.2013, 15:23 #10
под лаяутами/классами он имел ввиду активити.

передавайте информацию об фоне через Intent(intent.putExtra(), intent.get<Type>Extra()).
и уже в нужной активите выставляйте фон.
http://developer.android.com/trainin...-activity.html
1
korsaj
148 / 117 / 9
Регистрация: 16.08.2013
Сообщений: 514
12.11.2013, 15:26 #11
Цитата Сообщение от NOSC Посмотреть сообщение
Вот такой вариант предпочтительней, но, как и написал в вопросе:
Статик метод не есть хорошо..
putExtra рулит..
0
verylazy
Заблокирован
12.11.2013, 15:36 #12
не статик метод, а статик переменная не вижу ничего плохого в таком походе
я для себя вообще сделал класс, назвал его BlackBox и вынес в него необходимые мне глобальные переменные, которые теперь доступны из любой активити

а эти put/get extra удобно использовать когда необходимо передать данные из одного приложения в другое
лично мое мнение, если кто-то аргументированно покажет, что я не прав - скажу спасибо
0
NOSC
43 / 43 / 3
Регистрация: 10.10.2013
Сообщений: 297
12.11.2013, 15:42  [ТС] #13
Цитата Сообщение от verylazy Посмотреть сообщение
не статик метод, а статик переменная не вижу ничего плохого в таком походе
я для себя вообще сделал класс, назвал его BlackBox и вынес в него необходимые мне глобальные переменные, которые теперь доступны из любой активити

а эти put/get extra удобно использовать когда необходимо передать данные из одного приложения в другое
лично мое мнение, если кто-то аргументированно покажет, что я не прав - скажу спасибо
В моем случае что тогда не правильно??

Java
1
2
3
public static String s = null;
RelativeLayout wv = (RelativeLayout)findViewById(R.id.RelativeLayout1);
        wv.setBackgroundResource(s);
0
korsaj
148 / 117 / 9
Регистрация: 16.08.2013
Сообщений: 514
12.11.2013, 15:51 #14
verylazy, а как получаете ссылку на уже созданный экземпляр класса в другом активити или просто обращаетесь к переменной через имя класса?

Добавлено через 3 минуты
Цитата Сообщение от NOSC Посмотреть сообщение
В моем случае что тогда не правильно??
Если наведете курсор на метод setBackgroundResource, то увидите setBackgroundResource(int), а это говорит что аргумент int.
0
verylazy
Заблокирован
12.11.2013, 15:52 #15
мне проще показать код, чем объяснять
класс просто создан в том же пакете, что все активити
Java
1
2
3
4
5
package ua.com.test;
 
public class BlackBox {
    static String homeDir;
}
вот, например, строковая переменная, к которой можно обратиться из любого места в коде так BlackBox.homeDir
если вам надо "расшарить" имя файла то логично сделать тип поля не String, а File к примеру
1
12.11.2013, 15:52
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
12.11.2013, 15:52
Привет! Вот еще темы с ответами:

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

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

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

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


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

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

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