Старт кода при запуске Activity

Рейтинг: 0Ответов: 1Опубликовано: 26.03.2023

Запускаю вторую Activity, цель которой — конвертация View в формат PNG. Но вынужден делать лишнее движение в виде нажатия кнопки для вызова функции (начало конвертации).

Как запустить функцию при запуске Activity?

val screeshot = findViewById<Button>(R.id.screenshot)
imageUri = createImageUri()
screeshot.setOnClickListener {
    val bitmap = container.drawToBitmap()
    storeBitmap(bitmap)
}

Ответы

▲ 1

У вас в активности есть метод onCreate(). Туда можно вынести любой метод который вы хотите запускать автоматически без действия пользователя:

 override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        someFunction()
}

если же вы хотите вернуть какие-то данные с второй активности на первую, то можно воспользоваться StartActivityForResult:

fun openSecondActivityForResult() {
    val intent = Intent(this, SecondActivity::class.java)
    activityResultLauncher.launch(intent)
}

// We can do the assignment inside onAttach or onCreate
var activityResultLauncher = registerForActivityResult(StartActivityForResult()) { result ->
    // There are no request codes

    if (result.resultCode == resultCode1 && result.data != null) {
        // Do operations
    } else if (result.resultCode == resultCode2) {
        // Do operations
    }
}

и на второй активности когда все действия завершены, просто вызываем передачу информации:

val intent = Intent()
setResult(FirstActivity.resultCode1, intent)
finish()