我对Java和Android Studio都很陌生,所以请原谅我发布的任何愚蠢行为。现在我有一个按钮,我想找出自上次按下该按钮后再次按下它的时间,或者是你第一次按下按钮的时间。我知道如何做大部分工作,只是因为我无法找到按下按钮以备将来使用的确切时间的方法。
public class FightScreen extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_fight_screen);
final Button fightButton = (Button) findViewById(R.id.fightButton);
final TextView timeText = (TextView) findViewById(R.id.timeText);
final long bootTime = SystemClock.elapsedRealtime();
fightButton.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Long timeElapsed = SystemClock.elapsedRealtime() - bootTime;
timeText.setText(String.valueOf(timeElapsed));
}
});
}
}
我遗漏了一些与我的问题毫无关系的部分。 这段代码可以找到从启动活动到按下按钮的时间。我只是想知道如何将onClick函数中的变量返回到我未来的迭代中。类似于创建一个全局变量lastButtonPressTime并在适用时使用它来代替bootTime,这样这个代码块就可以实现我真正想要的。
编辑:这不是其他帖子的重复,因为我没有尝试使用Timer类。我想通过找出时间上的差异来弄清楚如何做到这一点。
答案 0 :(得分:0)
public class FightScreen extends AppCompatActivity implements View.OnClickListener {
long lastClickTime = 0;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_fight_screen);
final Button fightButton = (Button) findViewById(R.id.fightButton);
final TextView timeText = (TextView) findViewById(R.id.timeText);
final long bootTime = SystemClock.elapsedRealtime();
lastClickTime = bootTime;
fightButton.setOnClickListener(this);// the listener is this class now
@Override
public void onClick(View v) {
Long timeNow = SystemClock.elapsedRealtime();
Long timeElapsed = SystemClock.elapsedRealtime() - lastClickTime;
lastClickTime = timeNow;
timeText.setText(String.valueOf(timeElapsed));
}
}
实施View.OnClickListener
并覆盖onClick()
方法,如上所示,它基本上是一种处理事件的不同方式。如果在onClick()
中有多个View,您可以查看通过v.getId()
查看ID,以确定如何处理点击,具体取决于发送视图