Изменение 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(), а затем в основном действии вы изменяете текст, но будьте осторожны, если вы хотите один сигнал тревоги или сигнал периода

Другие вопросы по тегам