Использование значения textview активити из класса

Activity Lifecycle, Saving Activity State, Managing Tasks, Intent, Intent Filter
Ответить
SergeyAndSmart
Сообщения: 3
Зарегистрирован: 13 авг 2014, 14:50

Использование значения textview активити из класса

Сообщение SergeyAndSmart » 30 авг 2014, 21:45

Всем привет. В AlarmManagerBroadcastReceiver.java есть такой код, он отлично работает и каждую секунду срабатывает AlarmManager и записывает в Log "Будильник сработал!".

Код: Выделить всё

public void onReceive(Context context, Intent intent) {
         PowerManager pm = (PowerManager) context.getSystemService(Context.POWER_SERVICE);
         PowerManager.WakeLock wl = pm.newWakeLock(PowerManager.PARTIAL_WAKE_LOCK, "YOUR TAG");
         wl.acquire();
         Log.d(TAG,"Будильник сработал!");
         wl.release();
    }
Но проблема в том, что мне надо из кода в AlarmManagerBroadcastReceiver.java сравнить значения в MainActivity двух текстовых полей - texttime и textalarm, как получить к ним доступ из AlarmManagerBroadcastReceiver.java?
Вот я хочу сделать так:

Код: Выделить всё

   wl.acquire();
           if (texttime.getText()==textalarm.getText())
         Log.d(TAG,"Будильник сработал!");
         wl.release();

Аватара пользователя
altwin
Сообщения: 1951
Зарегистрирован: 13 ноя 2013, 14:46

Re: Использование значения textview активити из класса

Сообщение altwin » 31 авг 2014, 09:23

добавьте конструктор который не будет вызывать методы родителя для activity, добавьте методы getTextime() и getTextalarm(), которые будут возвращать значение, создайте инстанс класса и вызовите ээти методы... Читайте что такое, зачем придумали и нафига о ООП (обеъктно ориентированном программировании). И подумайте, вы уверенны, что оно вам надо?
Почему вы не можете сравнить их в своем активити и передать результат? Вам нужен шаблон проектирования Наблюдатель метод которого будет "слушать" результат сравнения и реагировать на него.
Изображение

SergeyAndSmart
Сообщения: 3
Зарегистрирован: 13 авг 2014, 14:50

Re: Использование значения textview активити из класса

Сообщение SergeyAndSmart » 31 авг 2014, 13:34

altwin писал(а):Почему вы не можете сравнить их в своем активити и передать результат?
Дело в том, что класс это AlarmManager и мне надо каждую секунду сравнивать значение textview, AlarmManager хорошо подходит для этой цели, можно конечно и в активити реализовать сравнение каждую секунду только вот как? AsyncTask не работает.

Аватара пользователя
altwin
Сообщения: 1951
Зарегистрирован: 13 ноя 2013, 14:46

Re: Использование значения textview активити из класса

Сообщение altwin » 31 авг 2014, 15:06

SergeyAndSmart писал(а):
altwin писал(а):Почему вы не можете сравнить их в своем активити и передать результат?
Дело в том, что класс это AlarmManager и мне надо каждую секунду сравнивать значение textview, AlarmManager хорошо подходит для этой цели, можно конечно и в активити реализовать сравнение каждую секунду только вот как? AsyncTask не работает.
Каждую секунду сравнивать textView? Оно же не меняется без вашего участия.... Вы уверенны, что оно вам нужно? :) Я уже давал ссылку на шаблон проектирования, который поможет реализовать "наблюдателя", если что -то изменится -узнаете, сравнивать ничего каждую секунду не нужно.
Изображение

SergeyAndSmart
Сообщения: 3
Зарегистрирован: 13 авг 2014, 14:50

Re: Использование значения textview активити из класса

Сообщение SergeyAndSmart » 31 авг 2014, 17:05

altwin писал(а):Каждую секунду сравнивать textView? Оно же не меняется без вашего участия.... Вы уверенны, что оно вам нужно? :) Я уже давал ссылку на шаблон проектирования, который поможет реализовать "наблюдателя", если что -то изменится -узнаете, сравнивать ничего каждую секунду не нужно.
Дело в том, что как раз textview и меняется без моего участия через AsyncTask. Давайте подробно опишу свою ситуацию. У меня в активити есть два textview, первое textview меняется через AsyncTask каждые 2,5с, второе не меняется. Первое textview это часы, второе это поле будильника. Так вот мне надо когда значение первого и второго textview совпали, вывести уведомление. Попробую через наблюдателя наверное.


Аватара пользователя
KamiSempai
Сообщения: 1339
Зарегистрирован: 17 фев 2012, 21:23
Откуда: Мордор

Re: Использование значения textview активити из класса

Сообщение KamiSempai » 01 сен 2014, 09:07

SergeyAndSmart писал(а):Дело в том, что как раз textview и меняется без моего участия через AsyncTask.
Ага, а AsyncTask значит без вашего участия создавался?
SergeyAndSmart писал(а):Давайте подробно опишу свою ситуацию. У меня в активити есть два textview, первое textview меняется через AsyncTask каждые 2,5с, второе не меняется. Первое textview это часы, второе это поле будильника. Так вот мне надо когда значение первого и второго textview совпали, вывести уведомление. Попробую через наблюдателя наверное.
Все предельно просто. Во первых, не нужно считывать данные с TextView - это не культурно. Для хранения времени используют long переменную, время срабатывания тоже в long переменной. TextView ЛИШЬ ОТОБРАЖАЕТ эти данные! Я так понимаю, что для времени срабатывания таймера используется не TextView а EditText. Тут все просто, назначить на этот EditText слушатель на изменение значения и при смене его получать разницу во времени между этим значением и значением таймера и на это время назначать сигна при помощи AlarmManager, также нужно будет не забыть отменить ранее назначенный сигнал, если он был назначен. Каждую секунду проверять срабатывание таймера ОЧЕНЬ дурная реализация. Всегда нужно вычислять конечное время и устанавливать сигнал один раз.
R.id.team
Хватит таскать макулатуру на тренировку! Используй T Note.

Ответить