🥨

Jetpack Compose / Navigation / 連続で素早く遷移すると画面が適切に表示されない

2023/12/14に公開

状況

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