java - 我的应用程序在单击按钮后崩溃

标签 java android xml crash

当我单击按钮时,我的应用程序崩溃了,但我不知道为什么。我多次查看了我的代码,但似乎找不到任何“重大缺陷”。该应用程序的目的只是以尽可能快的速度单击按钮两次,并显示从第一次点击到第二次点击所需的时间。某种 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/

相关文章:

java - 我不明白为什么java中的不可变对象(immutable对象)本质上总是线程安全的

java - KeyStore 不为带有 BouncyCaSTLe 的 Android 中的 PKCS12 文件应用/强制执行私钥密码

sql-server - TSQL Xpath 修改 XML 字符串

java - 使用批处理作业的 FlatFileItemReader 和 FlatFileItemWriter

java - Xstream - 删除值标签

java - 保存按钮的背景?

java - java中如何将一个元素移动到已排序数组的底部?

java - 在LibGDX And​​roid部署中执行transformClassesWithDexForDebug失败

java - Android - 如何将一个扩展名的文件添加到 ListView

java - Android 检索 TextView 结果为 Null。已设置ContentView;使用正确的 ID;在 Maifest 有 Activity