当我单击按钮时,我的应用程序崩溃了,但我不知道为什么。我多次查看了我的代码,但似乎找不到任何“重大缺陷”。该应用程序的目的只是以尽可能快的速度单击按钮两次,并显示从第一次点击到第二次点击所需的时间。某种 react 的东西。我使用了计时器,因为我不知道还能用什么。 (开始时间的值)-(当前计时器的值)=(第一次点击和第二次点击之间的时间)。
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="#000000"
tools:context="com.keklabs.reactiontimer.MainActivity">
<TextView
android:id="@+id/scoreText"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentTop="true"
android:layout_centerHorizontal="true"
android:layout_marginTop="78dp"
android:text="Click below to start!"
android:textColor="#39FF14"
android:textSize="30dp" />
<Button
android:id="@+id/startStopButton"
android:layout_width="match_parent"
android:layout_height="350dp"
android:layout_alignParentBottom="true"
android:layout_centerHorizontal="true"
android:background="#000000"
android:text="Start / Stop"
android:textSize="25dp"
android:textColor="#39FF14" />
</RelativeLayout>
public class MainActivity extends AppCompatActivity {
private final long startTime = 0;
private final long interval = 100;
private boolean buttonClicked;
private Button startStopButton;
private TextView scoreText;
CountDownTimer timer = new CountDownTimer(30000, 100) {
@Override
public void onTick(long millisUntilFinished) {
scoreText.setText("kek"); //displayed text is value of starttime (30000) - current value of timer,
} //some sort of reaction game thing
@Override
public void onFinish() {
}
};
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
TextView scoreText = (TextView) findViewById(R.id.scoreText);
Button startStopButton = (Button) findViewById(R.id.startStopButton);
startStopButton.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
if (!buttonClicked) {
timer.start();
buttonClicked = true;
}
else {
timer.cancel();
buttonClicked = false;
}
}
});
}
}
编辑
如何在 scoreText.setText(startTime - millisUntilFinished);
行中以正确的方式执行此操作以显示 startTime-当前计时器值?
CountDownTimer 计时器 = new CountDownTimer(startTime, 间隔) {
@Override
public void onTick(long millisUntilFinished) {
scoreText.setText(startTime - millisUntilFinished);
}
@Override
public void onFinish() {
}
};
最佳答案
实际上,您正在声明您的TextView scoreText
两次。一种是全局性的,另一种是本地性的。您可以替换TextView scoreText = (TextView) findViewById(R.id.scoreText);
至scoreText = (TextView) findViewById(R.id.scoreText);
在你的 onCreate() 中
关于java - 我的应用程序在单击按钮后崩溃,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48157487/