Я использую таймер обратного отсчета времени в формате 00:00 с этим кодом:
int timeCount = 150000;
public String formatTime(long millis) {
String output = "00:00";
long seconds = millis / 1000;
long minutes = seconds / 60;
seconds = seconds % 60;
minutes = minutes % 60;
String sec = String.valueOf(seconds);
String min = String.valueOf(minutes);
if (seconds < 10)
sec = "0" + seconds;
if (minutes < 10)
min= "0" + minutes;
output = min + " : " + sec;
return output;
}
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.kviz);
brojacVremena.start();
}
public class MyCount extends CountDownTimer {
public MyCount(long millisInFuture, long countDownInterval) {
super(millisInFuture, countDownInterval);
}
public void onFinish() {
}
public void onTick(long millisUntilFinished) {
vreme.setText("" + millisUntilFinished / 1000);
}
}
MyCount brojacVremena = new MyCount(timeCount, 1000)
{
public void onTick(long millisUntilFinished)
{
vreme.setText("" + formatTime(millisUntilFinished));
}
public void onFinish()
{
finish();
}
};
И это прекрасно работает. Но когда моя игра заканчивается, я запускаю всплывающее окно с startActivityForResult, и после того, как пользователь нажимает в нем кнопку «ОК», я начинаю следующий уровень, и мне нужно обновить свое время. Это уже не 150000 мс, это что-то другое. Я делаю это так:
static final int MY_REQUEST2 = 1;
Intent i = new Intent(Kviz.this, Popup_nivoi.class);
numberOfQuestions = 13;
timeCount = 160000;
i.putExtra("time", 160);
startActivityForResult(i, MY_REQUEST2);
Здесь я обновляю переменную int timeCount новым значением, но когда таймер запускается, я снова перехожу от 150 секунд. Что я делаю не так?
Этот метод отлично работает с несколькими другими переменными, которые я использую в этом классе, для точек, ошибок, оставшихся попыток и т. д. Не обновляется только переменная времени.
i.putExtra("time",timeCount)
? или я совсем не понимаю - person chancea   schedule 23.07.2013timeCount
уже был передан в таймерCountDown
, вам нужно сброситьmillisUntilFinished
илиmillisInFuture
- person chancea   schedule 23.07.2013CountDown
, и я предполагаю, что он делает его локальную копию и помещает ее либо вmillisUntilFinished
, либо вmillisInFuture
. Вам нужно будет либо сделать, либо использовать существующий вызов метода, который позволяет сбросить эти значения. - person chancea   schedule 23.07.2013