【发布时间】:2021-03-06 10:24:16
【问题描述】:
我正在制作一个简单的游戏来学习如何使用 Android Studio。游戏的目标是尽可能快地完成一些简单的任务。在我的主游戏屏幕中,我有一个线程每秒计数一次 int,因此玩家知道已经过去了多少时间。当玩家完成所有简单的任务后,游戏进入结束画面。现在我想在最终屏幕中显示时间,以便玩家知道他们完成的速度。运行游戏时出现错误。
这是每秒运行线程的代码:
Timer d = new Timer(true);
thread1 thread1 = new thread1(this, myCanvas);
t.scheduleAtFixedRate(thread1, 0, 1000);
这是线程每秒执行的tick函数:
public void tick1(){
timer++;
}
这是计时器的getter:
public int getTimer(){
return timer;
}
当游戏结束并进入最终屏幕时,我使用 getTimer() 来创建一个应该显示计时器的文本视图:
err = (TextView)findViewById(R.id.textView);
err.setText("Tijd: "+ timer+"");
这是我尝试运行它时收到的错误消息:
2021-03-06 11:18:38.153 21729-21729/com.example.test_game E/AndroidRuntime: FATAL EXCEPTION: main
Process: com.example.test_game, PID: 21729
java.lang.RuntimeException: Unable to start activity ComponentInfo{com.example.test_game/com.example.test_game.Eindscherm}: java.lang.NullPointerException: Attempt to invoke virtual method 'int com.example.test_game.MyCanvas.getTimer()' on a null object reference
at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:3792)
at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:3968)
at android.app.servertransaction.LaunchActivityItem.execute(LaunchActivityItem.java:85)
at android.app.servertransaction.TransactionExecutor.executeCallbacks(TransactionExecutor.java:135)
at android.app.servertransaction.TransactionExecutor.execute(TransactionExecutor.java:95)
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:2307)
at android.os.Handler.dispatchMessage(Handler.java:106)
at android.os.Looper.loop(Looper.java:246)
at android.app.ActivityThread.main(ActivityThread.java:8506)
at java.lang.reflect.Method.invoke(Native Method)
at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:602)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1130)
Caused by: java.lang.NullPointerException: Attempt to invoke virtual method 'int com.example.test_game.MyCanvas.getTimer()' on a null object reference
at com.example.test_game.Eindscherm.onCreate(Eindscherm.java:24)
at android.app.Activity.performCreate(Activity.java:8198)
at android.app.Activity.performCreate(Activity.java:8182)
at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1309)
at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:3765)
at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:3968)
at android.app.servertransaction.LaunchActivityItem.execute(LaunchActivityItem.java:85)
at android.app.servertransaction.TransactionExecutor.executeCallbacks(TransactionExecutor.java:135)
at android.app.servertransaction.TransactionExecutor.execute(TransactionExecutor.java:95)
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:2307)
at android.os.Handler.dispatchMessage(Handler.java:106)
at android.os.Looper.loop(Looper.java:246)
at android.app.ActivityThread.main(ActivityThread.java:8506)
at java.lang.reflect.Method.invoke(Native Method)
at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:602)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1130)
【问题讨论】:
-
对这个问题使用 countDownTimer CountDownTimerDocs
标签: java android android-intent