测量时间不起作用

时间:2015-03-03 20:54:40

标签: java android nullpointerexception

我想测量第一次按键点击和第三次按键点击之间的时间。我没有在主屏幕上获得任何类型的文本,其中放置了textView1。如果我启动应用程序,我会得到一个nullpointer。什么意思?

@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();
    }


}

1 个答案:

答案 0 :(得分:1)

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

另外你为什么要使用吐司意图?充其量是浪费,最糟糕的是它是一个问题。没有理由这样做。只需将差异转换为字符串即可。