IllegalStateException: FocusRequester не инициализируется во время тестирования Jetpack Compose.Android

Форум для тех, кто программирует под Android
Anonymous
IllegalStateException: FocusRequester не инициализируется во время тестирования Jetpack Compose.

Сообщение Anonymous »

У меня есть экран с TextFields. Мне нужно, чтобы первое TextField автоматически фокусировалось при отображении экрана.
Минимизированный пример кода
@Composable
fun ScreenView(
data: ScreenViewData,
) {
val focusManager = LocalFocusManager.current
val focusRequester = remember {
FocusRequester()
}

LaunchedEffect(
key1 = Unit,
) {
focusRequester.requestFocus()
}

Scaffold() { innerPadding ->
Column {
OutlinedTextField(
modifier = Modifier.focusRequester(focusRequester),
)
}
}
}

Код работает без проблем.
Но при тестировании пользовательского интерфейса я получаю следующую ошибку.

java.lang.IllegalStateException:

FocusRequester не инициализирован. Вот несколько возможных исправлений:
  • Запомните FocusRequester: val focusRequester = помните { FocusRequester() }
  • Вы забыли добавить Modifier.focusRequester() ?
  • Вы пытаетесь запросить фокус во время композиции? Запросы на фокусировку должны быть сделаны

    в ответ на какое-либо событие. Например, Modifier.clickable { focusRequester.requestFocus() }
Тестовый код >
@ExperimentalAnimationApi
class ScreenViewTest {

@get:Rule
val composeTestRule = createComposeRule()

@ExperimentalMaterialApi
@Test
fun ScreenViewElementsAreDisplayed() {
composeTestRule.setContent {
MyAppTheme {
ScreenView(
data = ScreenViewData(),
)
}
}

// Test fails before reaching assert statements
}
}


Подробнее здесь: https://stackoverflow.com/questions/699 ... ck-compose

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