java - 测量时间不起作用

标签 java android nullpointerexception

我想测量第一次按钮单击和第三次按钮单击之间的时间。我在放置 textView1 的主屏幕上没有收到任何类型的文本。如果我启动应用程序,我会得到一个空指针。那是什么意思?

@Override

public void onClick(View v) {
    Random r = new Random();
    int x = r.nextInt(800);
      int y = r.nextInt(800);
      long startTime =  SystemClock.elapsedRealtime();
      i++;

    View b = findViewById(R.id.start_time);
    b.setX(x);  
    b.setY(y);
    if (i == 1 ) {

        b.setX(+9);  
        b.setY(+5);
    }
    if (i == 2 ) {
        b.setX(x);  
        b.setY(y);
    }
    if (i == 3 ) {
        b.setX(x);  
        b.setY(y);
    }
    else if (i == 4) {
        long difference = SystemClock.elapsedRealtime()  - startTime;

          Intent intent = new Intent(Game.this, MainScreen.class);
          intent.putExtra("time",difference);
         // Toast.makeText(getApplicationContext(), getIntent().getStringExtra("time"), Toast.LENGTH_LONG).show();
          textview1.setText(getIntent().getStringExtra("time"));
        finish();
    }


}

最佳答案

嗯,这个函数并没有按照你的想法做。 startTime 是一个局部变量,每次函数退出时都会被清除。如果您想保留按下按钮之间的时间,则需要使用类变量。除非 i==1,否则您也不想初始化 startTime。现在你每次都这样做,这将导致它总是有 0(或非常接近 0)的差异。

另外,为什么要使用 Intent 来表示 toast ?往好了说,这是一种浪费,往坏了说,这是一个问题。没有理由。只需将差异转换为字符串即可。

关于java - 测量时间不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28841684/

相关文章:

C#无符号字节加密到Java有符号字节解密

java - 在 Android 上使用 tcpdump 时出现延迟 - 为什么?

java - Thymeleaf Th :Each infinite loop, 与 Spring MVC

android - 如何在垂直 ScrollView 中显示图像列表?

Android 原生强指针与 std::shared_ptr

java - 什么是NullPointerException,我该如何解决?

java - Hibernate xml设置映射问题

java - Android:当应用程序的多个屏幕具有相似布局时,避免代码重复的最佳方法是什么?

apache-spark - apache zeppelin : java. lang.NullPointerException

java - 为什么返回空集合被认为是好的做法?