/
Irisska
/
Task3
Обзор
Документация
Войти
/
Irisska
/
Task3
Код
Запросы
0
Задачи
Вики
Пакеты
0
Релизы
0
Аналитика
Безопасность
master
app/src/main/java/com/example/calc/MainActivity.kt
79 строк
3 KB
Irisska
first_commit
20 янв 2025, 10:52
20 янв 2025, 10:52
57dc790
Код
Авторство
О чём код?
package com.example.calc import android.os.Bundle import com.google.android.material.snackbar.Snackbar import androidx.appcompat.app.AppCompatActivity import androidx.navigation.findNavController import androidx.navigation.ui.AppBarConfiguration import androidx.navigation.ui.navigateUp import androidx.navigation.ui.setupActionBarWithNavController import android.view.Menu import android.view.MenuItem import com.example.calc.databinding.ActivityMainBinding import kotlinx.coroutines.* import android.view.View import android.widget.Button import android.widget.EditText import android.widget.TextView import android.widget.Toast class MainActivity : AppCompatActivity() { private lateinit var editTextA: EditText private lateinit var editTextB: EditText private lateinit var textViewResult: TextView private lateinit var textViewHint: TextView private lateinit var buttonCalculate: Button private var lastA: Double? = null private var lastB: Double? = null private var lastResult: Double? = null override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) setContentView(R.layout.activity_main) // Инициализация UI элементов editTextA = findViewById(R.id.editTextA) editTextB = findViewById(R.id.editTextB) textViewResult = findViewById(R.id.textViewResult) textViewHint = findViewById(R.id.textViewHint) buttonCalculate = findViewById(R.id.buttonCalculate) // Обработчик нажатия кнопки buttonCalculate.setOnClickListener { val a = editTextA.text.toString().toDoubleOrNull() val b = editTextB.text.toString().toDoubleOrNull() if (a != null && b != null) { // Если числа были изменены, запускаем расчёт if (a != lastA || b != lastB) { textViewHint.text = "Ожидайте, расчёт..." // Выполнение расчёта в фоновом потоке с задержкой CoroutineScope(Dispatchers.Main).launch { delay(2000) // имитация долгой операции (2 секунды) val result = calculateResult(a, b) textViewResult.text = "Результат: $result" textViewHint.text = "Расчёт завершён" lastResult = calculateResult(a, b) } } else { // Если числа не изменялись, показываем прошлый результат textViewResult.text = "Результат: $lastResult" textViewHint.text = "Результат из кэша" } lastA = a lastB = b } } } // Функция для расчёта результата private fun calculateResult(a: Double, b: Double): Double { return Math.sqrt((Math.pow(a,b)*b)/2) } }