Форум программистов, компьютерный форум, киберфорум
Наши страницы
Программирование Android
Войти
Регистрация
Восстановить пароль
 
1ые
1 / 1 / 3
Регистрация: 19.01.2013
Сообщений: 98
#1

Передать информацию вызывающему классу - Программирование Android

16.07.2015, 13:58. Просмотров 387. Ответов 8
Метки нет (Все метки)

Доброго дня, вопрос такой:
Допустим у меня есть класс A, в нем есть Thread.
Java
1
2
3
4
public class A implements Runnable
{
 
}
Есть класс B в котором есть экземпляр класса А.
Java
1
2
3
4
5
6
7
8
9
public class MyActivity extends Activity 
{
int b;
A variable;
public void function()
{
b = 10;
} 
}
В классе A произошло какое либо событие, в связи с этим событием мне нужно вызвать метод function() класса В как это сделать?
0
Лучшие ответы (1)
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
16.07.2015, 13:58
Я подобрал для вас темы с готовыми решениями и ответами на вопрос Передать информацию вызывающему классу (Программирование Android):

Передать через Intent информацию об Item
Выводит ошибку и приложение закрывается by Force Close ошибка по ходу в...

Приведение TextView к своему классу
public class MyTv extends TextView{ int place = -1; public...

Как обратиться к классу вшитому в jar архив
Добрый вечер. Помогите разобраться. Задание такое: Сделать из определенного...

Доступ из вложенного класса к вызывающему классу
Есть экземпляр класса View.(создается экземпляр окна). Здесь же создается...

Как передать классу переменную?
Здравствуйте уважаемые ПРО! Подскажите как передать классу значение из...

Как передать контролы другому классу?
Думаю проще всего как мне обьект этой формы передать в след класс, в котором я...

8
Mikalai
262 / 238 / 95
Регистрация: 11.01.2015
Сообщений: 666
16.07.2015, 15:24 #2
Вообще вопрос задан не в той ветке, но если применимо к android, то можно почитать тут
0
YuraAAA
1578 / 1319 / 282
Регистрация: 25.10.2009
Сообщений: 3,436
Записей в блоге: 2
16.07.2015, 15:38 #3
Лучший ответ Сообщение было отмечено 1ые как решение

Решение

1ые,

Java
1
2
3
4
5
6
7
8
9
public class A extends Observable implements Runnable {
 
 
    @Override
    public void run() {
        //Something happens
        notifyObservers();
    }
}
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
import java.util.Observable;
import java.util.Observer;
 
public class MyActivity extends Activity implements Observer {
 
 
    private int b;
    private A variable;
 
    public void onResume() {
        super.onResume();
        variable = new A();
        variable.addObserver(this);
    }
 
 
    @Override
    public void update(Observable o, Object arg) {
        function();
    }
 
    public void function() {
        b = 10;
    }
}
1
1ые
1 / 1 / 3
Регистрация: 19.01.2013
Сообщений: 98
17.07.2015, 01:11  [ТС] #4
Большое спасибо, не знал про такое, очень удобно)
0
YuraAAA
1578 / 1319 / 282
Регистрация: 25.10.2009
Сообщений: 3,436
Записей в блоге: 2
17.07.2015, 11:42 #5
1ые, это классическая реализация паттерна Observer
0
sskdroid
8 / 8 / 3
Регистрация: 03.03.2015
Сообщений: 68
15.11.2015, 12:30 #6
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
46
47
public class New {
 
    public static void main(String[] args){
 
        Subj subj = new Subj();
        Nablud nablud = new Nablud();
 
        nablud.functionPrint();
        subj.run();
        nablud.functionPrint();
 
    }
}
 
 
public class Subj extends Observable {
    public void run() {
        //Something happens
        notifyObservers();
    }
}
 
 
public class Nablud implements Observer {
 
    private int b;
    private Subj variable;
 
    Nablud() {
        variable = new Subj();
        variable.addObserver(this);
    }
 
    @Override
    public void update(Observable o, Object arg) {
        function();
    }
 
    public void function(){
        b = 10;
    }
 
    public void functionPrint() {
        System.out.println(b);
    }
 
}
function() не вызывается и печатает оба раза ноль. в чем ошибка, подскажите?
0
YuraAAA
1578 / 1319 / 282
Регистрация: 25.10.2009
Сообщений: 3,436
Записей в блоге: 2
15.11.2015, 14:39 #7
Цитата Сообщение от sskdroid Посмотреть сообщение
Subj subj = new Subj();
тут одна ссылка,
Цитата Сообщение от sskdroid Посмотреть сообщение
variable = new Subj();
тут вторая
0
sskdroid
8 / 8 / 3
Регистрация: 03.03.2015
Сообщений: 68
15.11.2015, 15:04 #8
видимо я чего-то не понимаю. при создании экземпляра Nablud создается экземпляр Subj, в котором сразу регистрируется экземпляр Nablud как наблюдатель. верно?

таким вот образом добираюсь то run() variable

в классе Nablud
Java
1
2
3
Subj returnVariable(){
        return variable;
    }
и в классе main
Java
1
nablud.returnVariable().run();
но update не срабатывает
0
YuraAAA
1578 / 1319 / 282
Регистрация: 25.10.2009
Сообщений: 3,436
Записей в блоге: 2
16.11.2015, 14:28 #9
sskdroid,
setChanged() потеряли

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
46
public class New {
 
    public static void main(String[] args){
 
        Subj subj = new Subj();
        Nablud nablud = new Nablud(subj);
 
        nablud.functionPrint();
        subj.run();
        nablud.functionPrint();
 
    }
}
 
 
class Subj extends Observable {
    public void run() {
        //Something happens
        setChanged();
        notifyObservers();
    }
}
 
 
class Nablud implements Observer {
 
    private int b;
 
    Nablud(Subj variable) {
        variable.addObserver(this);
    }
 
    @Override
    public void update(Observable o, Object arg) {
        function();
    }
 
    public void function(){
        b = 10;
    }
 
    public void functionPrint() {
        System.out.println(b);
    }
 
}
1
16.11.2015, 14:28
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
16.11.2015, 14:28
Привет! Вот еще темы с решениями:

Как передать объект всему классу
Есть объект w_out типа UserControl. И инициализируется он в основном классе...

Как передать новую командную строку классу Dlg
Здравствуйте! Есть проект, exe-шка которого, будет запускаться из другого...

Наследование: как передать массив одного класса другому классу?
Доброе время суток, нужна помощь. Не могу сотворить чудо. Сомневаюсь уже во...

Как объявить конструктор в классе, чтобы можно было передать параметры классу напрямую
Здравствуйте уважаемые форумчане. Углубляясь в изучение C# я понял, что не...


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

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

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