Увеличение таймера на один, когда пользователь пытается сбросить его обратно в ноль в AndroidAndroid

Форум для тех, кто программирует под Android
Ответить
Anonymous
 Увеличение таймера на один, когда пользователь пытается сбросить его обратно в ноль в Android

Сообщение Anonymous »

Я сделал стандартное приложение Spectwatch в Android Studio, используя JetPack Compose. Это дает пользователю возможность сбросить секундомер обратно в ноль, однако есть проблема. Секундомер сбросится обратно в ноль, но затем немедленно увеличивается на один. < /P>
Вот код. Существует переменная, чтобы определить, работает ли таймер, называемый «Istimerrunning». Существует функция, которая запускает таймер, используя петлю while внутри прицела Coroutine, называемого «Starttimer». Существует функция, останавливает таймер и сбрасывает его обратно в ноль, называемый «переселенник». Существует текстовый композитный, который отображает время. Есть две кнопки: одна запускает таймер, другой сбрасывает его. < /P>

Код: Выделить всё

// Time Variable
var time by remember { mutableIntStateOf(0) }

// Is Timer Running Variable
var isTimerRunning by remember { mutableStateOf(false) }

// Start Timer Function
fun startTimer() {
isTimerRunning = true
CoroutineScope(Dispatchers.IO).launch {
while (isTimerRunning) {
delay(1000)
time += 1
}
}
}

// Reset Timer Function
fun resetTimer() {
isTimerRunning = false
time = 0
}

// App Layout
Column(
horizontalAlignment = Alignment.CenterHorizontally,
verticalArrangement = Arrangement.Center,
modifier = Modifier
.fillMaxSize()
) {
// Display Timer
Text(text = time.toString())

// Start Timer Button
Button(onClick = { startTimer() }) {
Text(text = "Start")
}

// Reset Timer Button
Button(onClick = { resetTimer() }) {
Text(text = "Reset")
}
}
< /code>
Как я уже говорил выше, таймер увеличивается на один после сброса до нуля. Я попытался поместить коратику в функцию «переселения» и положить задержку в тридцать миллисекунд между двумя такими переменными < /p>
fun resetTimer() {
CoroutineScope(Dispatchers.IO).launch {
isTimerRunning = false
delay(30)
time = 0
}
}
Но проблема все еще сохраняется.

Подробнее здесь: https://stackoverflow.com/questions/787 ... in-android
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «Android»