#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 ;
}
}
});