Как измерить время между щелчками?

#java #android

#java #Android

Вопрос:

Я хочу создать простой таймер, который при щелчке button начнет отсчет времени, и когда я нажимаю второй раз на кнопку, я получаю прошедшее время в миллисекундах до textView .

 public class MainActivity extends AppCompatActivity {
int i = 0;
@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);

    final TextView textView = (TextView) findViewById(R.id.textView);
    Button button = (Button) findViewById(R.id.button);
    button.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            long start = System.currentTimeMillis();
            i  ;
            if (i >= 2)
            {
                long end = System.currentTimeMillis();
                long diff = end - start;
                textView.setText(String.valueOf(diff));
            }
        }
    });

}
  

Я получаю значение 0 при запуске приложения

Комментарии:

1. Да, вы уже измеряете то, что хотите, так в чем же ваш вопрос?

2. С какой проблемой вы столкнулись сейчас?

3. @SuhyeonLee Я получаю значение 0

4. это потому, что вы сохранили время запуска в своем прослушивателе. сделайте start вне прослушивателя.

5. @SuhyeonLee Вау, вот и все, это устранило мою проблему, спасибо!

Ответ №1:

 public class MainActivity extends AppCompatActivity {
private long start = 0;
@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);

    final TextView textView = (TextView) findViewById(R.id.textView);
    Button button = (Button) findViewById(R.id.button);
    button.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            if (start > 0) {
                long end = System.currentTimeMillis();
                long diff = end - start;
                textView.setText(String.valueOf(diff));
                start = 0;
            } else {
                start = System.currentTimeMillis();
            }
    });

}
  

Ответ №2:

Вы сохраняете start каждый раз, когда нажимаете кнопку, поэтому start и end должно быть почти одинаковым.

 final TextView textView = (TextView) findViewById(R.id.textView);
Button button = (Button) findViewById(R.id.button);
long start = -1;
button.setOnClickListener(new View.OnClickListener() {
    @Override
    public void onClick(View v) {
        if(start < 0)
            start = System.currentTimeMillis();
        else {
            long end = System.currentTimeMillis();
            long diff = end - start;
            textView.setText(String.valueOf(diff));
            start = -1;
        }
    }
});
  

Ответ №3:

Попробуйте это

    int i = 1;
   long start,end;

    Button button = (Button) findViewById(R.id.button);
    button.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            if (i == 2)
            {
                end = System.currentTimeMillis();
                long diff = end - start;
                textView.setText(String.valueOf(diff));
                i = 1;
            }
            else
            {
                start = System.currentTimeMillis();
                i  ;
            }
        }
    });