Изменение textview из другого класса приводит к сбою
У меня есть приемник будильника, который работает в mainActivity каждый день в определенное время каждый день:
public void scheduleAlarm()
{
Calendar calendar = Calendar.getInstance();
calendar.setTimeInMillis(System.currentTimeMillis());
calendar.set(Calendar.HOUR_OF_DAY, 16);
calendar.set(Calendar.MINUTE, 25);
Intent intentAlarm = new Intent(this, AlarmReceiver.class);
AlarmManager alarmManager = (AlarmManager) getSystemService(Context.ALARM_SERVICE);
alarmManager.set(AlarmManager.RTC_WAKEUP, calendar.getTimeInMillis(), PendingIntent.getBroadcast(this,1, intentAlarm, PendingIntent.FLAG_UPDATE_CURRENT));
}
в другом классе с именем alarmReceiver я пытаюсь изменить контекст textView, но он падает...
public class AlarmReceiver extends BroadcastReceiver {
NotificationCompat.Builder mBuilder;
@Override
public void onReceive(Context context, Intent intent) {
TextView black;
black = (TextView) ((Activity)context).findViewById(R.id.BlackCounterDisplay);
black.setText("toto");
}
}
не могу найти почему...
2 ответа
Решение
Если вы посмотрите на трассировку стека, вы должны увидеть ClassCastException
как Context
перешел к onReceive()
это не Activity
,
Вы создаете глобальную переменную, которую вы должны проверить внутри основного действия, и задаете для нее значение true в onReceive(), а затем в основном действии вы изменяете текст, но будьте осторожны, если вы хотите один сигнал тревоги или сигнал периода