🥨
Jetpack Compose / Navigation / 連続で素早く遷移すると画面が適切に表示されない
状況
- Jetpack Compose で画面遷移(Navigation)を実装する(developer.android.com)
dependencies {
...
implementation("androidx.navigation:navigation-runtime-ktx:2.7.5")
}
- 画面遷移の操作を 連続で素早く 実行すると、遷移後の各 Composable が適切に表示されない
- 移動直後に表示される場合もあるが、しばらくすると消える
- 表示はされていないが、Composable 自体は残っていて(?)、TextField や Button の場所をタップすると動作する
- Scaffold 内の TopAppBar まで消えてしまう(特に状態に左右される部品ではないはず)
- TopAppBar に設置した「戻る」ボタンを連続で素早く押しても再現する
表示されてないTextFieldにフォーカスが入る
応急処置
- 画面遷移時のアニメーションを無効にする
NavHost(
navController = navController,
startDestination = "StartScreenName",
enterTransition = {
EnterTransition.None // 無効にする
},
exitTransition = {
ExitTransition.None // 無効にする
}
) {
composable(route = "StartScreenName") {
// ...
}
Discussion