Страница 1 из 1
Использование значения textview активити из класса
Добавлено: 30 авг 2014, 21:45
SergeyAndSmart
Всем привет. В 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();
Re: Использование значения textview активити из класса
Добавлено: 31 авг 2014, 09:23
altwin
добавьте конструктор который не будет вызывать методы родителя для activity, добавьте методы getTextime() и getTextalarm(), которые будут возвращать значение, создайте инстанс класса и вызовите ээти методы... Читайте что такое, зачем придумали и нафига о ООП (обеъктно ориентированном программировании). И подумайте, вы уверенны, что оно вам надо?
Почему вы не можете сравнить их в своем активити и передать результат? Вам нужен шаблон проектирования
Наблюдатель метод которого будет "слушать" результат сравнения и реагировать на него.
Re: Использование значения textview активити из класса
Добавлено: 31 авг 2014, 13:34
SergeyAndSmart
altwin писал(а):Почему вы не можете сравнить их в своем активити и передать результат?
Дело в том, что класс это AlarmManager и мне надо каждую секунду сравнивать значение textview, AlarmManager хорошо подходит для этой цели, можно конечно и в активити реализовать сравнение каждую секунду только вот как? AsyncTask не работает.
Re: Использование значения textview активити из класса
Добавлено: 31 авг 2014, 15:06
altwin
SergeyAndSmart писал(а):altwin писал(а):Почему вы не можете сравнить их в своем активити и передать результат?
Дело в том, что класс это AlarmManager и мне надо каждую секунду сравнивать значение textview, AlarmManager хорошо подходит для этой цели, можно конечно и в активити реализовать сравнение каждую секунду только вот как? AsyncTask не работает.
Каждую секунду сравнивать textView? Оно же не меняется без вашего участия.... Вы уверенны, что оно вам нужно?

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

Я уже давал ссылку на шаблон проектирования, который поможет реализовать "наблюдателя", если что -то изменится -узнаете, сравнивать ничего каждую секунду не нужно.
Дело в том, что как раз textview и меняется без моего участия через AsyncTask. Давайте подробно опишу свою ситуацию. У меня в активити есть два textview, первое textview меняется через AsyncTask каждые 2,5с, второе не меняется. Первое textview это часы, второе это поле будильника. Так вот мне надо когда значение первого и второго textview совпали, вывести уведомление. Попробую через наблюдателя наверное.
Re: Использование значения textview активити из класса
Добавлено: 31 авг 2014, 17:40
altwin
Re: Использование значения textview активити из класса
Добавлено: 01 сен 2014, 09:07
KamiSempai
SergeyAndSmart писал(а):Дело в том, что как раз textview и меняется без моего участия через AsyncTask.
Ага, а AsyncTask значит без вашего участия создавался?
SergeyAndSmart писал(а):Давайте подробно опишу свою ситуацию. У меня в активити есть два textview, первое textview меняется через AsyncTask каждые 2,5с, второе не меняется. Первое textview это часы, второе это поле будильника. Так вот мне надо когда значение первого и второго textview совпали, вывести уведомление. Попробую через наблюдателя наверное.
Все предельно просто. Во первых, не нужно считывать данные с TextView - это не культурно. Для хранения времени используют long переменную, время срабатывания тоже в long переменной. TextView
ЛИШЬ ОТОБРАЖАЕТ эти данные! Я так понимаю, что для времени срабатывания таймера используется не TextView а EditText. Тут все просто, назначить на этот EditText слушатель на изменение значения и при смене его получать разницу во времени между этим значением и значением таймера и на это время назначать сигна при помощи AlarmManager, также нужно будет не забыть отменить ранее назначенный сигнал, если он был назначен. Каждую секунду проверять срабатывание таймера ОЧЕНЬ дурная реализация. Всегда нужно вычислять конечное время и устанавливать сигнал один раз.