【发布时间】:2017-04-29 06:46:19
【问题描述】:
当我使用这段代码时:
@Override
public void onReceive(Context context, Intent intent) {
seconds += 0.1;
if (seconds > 59.9) {
seconds=0;
minutes++;
}
TextView tv = (TextView)((MainActivity)context).findViewById(R.id.txtChron);
tv.setText (String.valueOf(minutes) + ":" + String.valueOf(seconds));
}
尝试将上下文转换为 MainActivity 时出现错误。
这是错误/堆栈跟踪:
E/AndroidRuntime:致命异常:主进程: com.example.jordanbleu.lab8chronservjordanbleu,PID:22693 java.lang.RuntimeException:接收广播意图时出错{ act=com.example.jordanbleu.lab8chronservjordanbleu.MY_TIME_TICK flg=0x10 } 在 com.example.jordanbleu.lab8chronservjordanbleu.ChronometerReceiver@d9365fe 在 android.app.LoadedApk$ReceiverDispatcher$Args.run(LoadedApk.java:1132) 在 android.os.Handler.handleCallback(Handler.java:751) 在 android.os.Handler.dispatchMessage(Handler.java:95) 在 android.os.Looper.loop(Looper.java:154) 在 android.app.ActivityThread.main(ActivityThread.java:6119) 在 java.lang.reflect.Method.invoke(Native Method) 在 com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:886) 在 com.android.internal.os.ZygoteInit.main(ZygoteInit.java:776) 引起 by: java.lang.ClassCastException: android.app.Application 不能 转换为 com.example.jordanbleu.lab8chronservjordanbleu.MainActivity 在 com.example.jordanbleu.lab8chronservjordanbleu.ChronometerReceiver.onReceive(ChronometerReceiver.java:41) 在 android.app.LoadedApk$ReceiverDispatcher$Args.run(LoadedApk.java:1122) 在 android.os.Handler.handleCallback(Handler.java:751) 在 android.os.Handler.dispatchMessage(Handler.java:95) 在 android.os.Looper.loop(Looper.java:154) 在 android.app.ActivityThread.main(ActivityThread.java:6119) 在 java.lang.reflect.Method.invoke(Native Method) 在 com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:886) 在 com.android.internal.os.ZygoteInit.main(ZygoteInit.java:776)
所以我有一个MainActivity,它启动了一项服务。该服务创建一个新线程,该线程不断创建由BroadcastReceiver 处理的隐式意图。此广播接收器将更新时钟,并使用更新的时间更新布局中的TextView。但是当我尝试通过 context 参数访问findViewByID 时,我得到了上面的错误。
【问题讨论】:
标签: java android android-intent broadcastreceiver android-service