2014-09-28 51 views
0

我有mainActivity每天在特定的時間每天都在運行的報警接收器:從另一個類改變TextView的崩潰一切

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"); 
} 

}

找不到爲什麼...

回答

0

如果您look at your stack trace,您應該看到ClassCastException,因爲Context傳遞給onReceive()不是Activity

+0

確實我看到了ClassCastException,所以你有什麼想法我可以如何解決這個問題? – lguenier 2014-09-28 18:03:45

+0

@lguenier:目前還不清楚爲什麼你認爲每天16:25你會有一個活動,更不用說認爲更新該活動是對'AlarmManager'事件的正確迴應。因此,我不能給你太多的具體建議。 – CommonsWare 2014-09-28 18:07:11

+0

以及我需要每天在16:25重置計數器爲零... – lguenier 2014-09-28 19:05:33

0

你讓全局變量,你應該檢查的主要活動 內,並將其設置爲true裏面的onReceive() 然後在主要活動更改文本 ,但如果你想有一個單一的報警或週期報警becarefull

相關問題