0
我创建了一个闹钟,我希望当闹钟停止时可以在MainActivity中设置一个字符串为TextView,所以我尝试使用接口,但它的错误:
产生的原因:java.lang.ClassCastException:AlarmReceiver不能转换到AlarmReceiver $ OnAlarmOver
AlarmReceiver.java
public class AlarmReceiver extends BroadcastReceiver {
public AlarmReceiver() {
}
@Override
public void onReceive(Context context, Intent intent) {
...
OnAlarmOver onAlarmOver = (OnAlarmOver) context; //<--error
onAlarmOver.OnAlarmOverText("Alarm stop");
}
public interface OnAlarmOver {
public void OnAlarmOverText(String overText);
}
}
MainActivity.java
public class MainActivity extends AppCompatActivity implements AlarmReceiver.OnAlarmOver {
...
public void OnAlarmOverText(String overText){
alarm_text.setText(overText);
}
}
我的英语很差,对不起。
您可以在错误的位置打印'context.getClass()。getName()'到logcat(或toast),并告诉我们结果是什么? – hexafraction
Toast result is android.app.ReceiverRestrictedContext –
因此,在这种情况下,您的上下文不是您的主要活动,因为您的主要活动已关闭时可能会触发警报。报警设计的目的与定时器略有不同。 – hexafraction