我想测量第一次按键点击和第三次按键点击之间的时间。我没有在主屏幕上获得任何类型的文本,其中放置了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();
}
}
答案 0 :(得分:1)
嗯,这个功能没有按你的想法行事。 startTime是一个局部变量,每次函数退出时都会被清除。如果要在按下按钮之间保持时间,则需要使用类变量。除非i == 1,否则您也不想初始化startTime。现在你每次都这样做,这将导致它总是有0(或非常接近0)的差异。
另外你为什么要使用吐司意图?充其量是浪费,最糟糕的是它是一个问题。没有理由这样做。只需将差异转换为字符串即可。