我想测量第一次按钮单击和第三次按钮单击之间的时间。我在放置 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/