Создаем портфолио за 1 месяц
К концу месяца: 4 классных проекта в вашем портфолио! Стоимость: 100$. Подробности...
416 of 502 menu
◀ ▶

Класс StartActivityForResult

Класс ActivityResultContracts.StartActivityForResult заменяет устаревший вызов startActivityForResult на Activity Result API. В launch передают Intent, в лямбде onResult приходит ActivityResult с кодом и intent. Регистрация через rememberLauncherForActivityResult или registerForActivityResult.

Синтаксис

ActivityResultContracts.StartActivityForResult()

Пример

Давайте откроем вторую activity и прочитаем resultCode:

import android.app.Activity import android.content.Intent import android.os.Bundle import androidx.activity.ComponentActivity import androidx.activity.compose.rememberLauncherForActivityResult import androidx.activity.compose.setContent import androidx.activity.result.contract.ActivityResultContracts import androidx.compose.material3.Button import androidx.compose.material3.Text import androidx.compose.runtime.getValue import androidx.compose.runtime.mutableStateOf import androidx.compose.runtime.remember import androidx.compose.runtime.setValue class MainActivity : ComponentActivity() { override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) setContent { var label by remember { mutableStateOf("abcde") } val launcher = rememberLauncherForActivityResult( ActivityResultContracts.StartActivityForResult(), ) { res -> label = if (res.resultCode == Activity.RESULT_OK) { "12345" } else { "abcde" } } Button(onClick = { val intent = Intent( this@MainActivity, SecondActivity::class.java, ) launcher.launch(intent) }) { Text(text = "abcde") } Text(text = label) } } } class SecondActivity : ComponentActivity() { override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) setResult(Activity.RESULT_OK) finish() } }

На экране после возврата с RESULT_OK текст станет "12345".

Смотрите также

← →
↑
Мы используем cookie для работы сайта, аналитики и персонализации. Обработка данных происходит согласно Политике конфиденциальности.
принять все настроить отклонить