Crash with WearNavScaffold
Version 0.1.11
I've only seen this crash in production so far. It's the most frequent crash on the Wear OS version of my app. I haven't yet reproduced this locally.
Exception java.lang.NullPointerException: Attempt to invoke virtual method 'int java.lang.Integer.intValue()' on a null object reference
at com.google.android.horologist.compose.navscaffold.WearNavScaffoldKt$WearNavScaffold$3.invoke (WearNavScaffold.kt:86)
at androidx.compose.runtime.internal.ComposableLambdaImpl.invoke (ComposableLambda.jvm.kt:34)
at androidx.compose.runtime.ComposerImpl.recomposeToGroupEnd (Composer.kt:2304)
at androidx.compose.runtime.ComposerImpl.skipToGroupEnd (Composer.kt:2634)
at androidx.wear.compose.material.ScaffoldKt.Scaffold (Scaffold.kt:63)
at com.google.android.horologist.compose.navscaffold.WearNavScaffoldKt.WearNavScaffold (WearNavScaffold.kt:77)
at com.google.android.horologist.compose.navscaffold.WearNavScaffoldKt$WearNavScaffold$5.invoke (WearNavScaffold.kt)
at androidx.compose.runtime.ComposerImpl.recomposeToGroupEnd (Composer.kt:2304)
at androidx.compose.runtime.ComposerImpl.skipToGroupEnd (Composer.kt:2634)
at androidx.compose.ui.platform.AbstractComposeView$ensureCompositionCreated$1.invoke (ComposeView.android.kt:247)
at androidx.compose.runtime.internal.ComposableLambdaImpl.invoke (ComposableLambda.jvm.kt:34)
at androidx.compose.runtime.CompositionLocalKt.CompositionLocalProvider (CompositionLocal.kt:226)
at androidx.compose.ui.platform.CompositionLocalsKt.ProvideCommonCompositionLocals (CompositionLocals.kt:176)
at androidx.compose.ui.platform.AndroidCompositionLocals_androidKt$ProvideAndroidCompositionLocals$3.invoke (AndroidCompositionLocals.android.kt:122)
at androidx.compose.runtime.internal.ComposableLambdaImpl.invoke (ComposableLambda.jvm.kt:34)
at androidx.compose.runtime.CompositionLocalKt.CompositionLocalProvider (CompositionLocal.kt:226)
at androidx.compose.ui.platform.AndroidCompositionLocals_androidKt.ProvideAndroidCompositionLocals (AndroidCompositionLocals.android.kt:87)
at androidx.compose.ui.platform.AndroidCompositionLocals_androidKt$ProvideAndroidCompositionLocals$4.invoke (AndroidCompositionLocals.android.kt)
at androidx.compose.runtime.ComposerImpl.recomposeToGroupEnd (Composer.kt:2304)
at androidx.compose.runtime.ComposerImpl$doCompose$2$5.invoke (Composer.kt:3191)
at androidx.compose.runtime.SnapshotStateKt__DerivedStateKt.observeDerivedStateRecalculations (SnapshotStateKt__DerivedStateKt.java:245)
at androidx.compose.runtime.ComposerImpl.doCompose (Composer.kt:3158)
at androidx.compose.runtime.CompositionImpl.recompose (Composition.kt:743)
at androidx.compose.runtime.Recomposer.performRecompose (Recomposer.kt:866)
at androidx.compose.runtime.Recomposer$runRecomposeAndApplyChanges$2$2.invoke (Recomposer.kt:454)
at androidx.compose.ui.platform.AndroidUiFrameClock$withFrameNanos$2$callback$1.doFrame (AndroidUiFrameClock.android.kt:34)
at androidx.compose.ui.platform.AndroidUiDispatcher$dispatchCallback$1.doFrame (AndroidUiDispatcher.android.kt:67)
at android.view.Choreographer$CallbackRecord.run (Choreographer.java:996)
at android.view.Choreographer.doCallbacks (Choreographer.java:796)
at android.view.Choreographer.doFrame (Choreographer.java:727)
at android.view.Choreographer$FrameDisplayEventReceiver.run (Choreographer.java:983)
at android.os.Handler.handleCallback (Handler.java:938)
at android.os.Handler.dispatchMessage (Handler.java:99)
at android.os.Looper.loop (Looper.java:246)
at android.app.ActivityThread.main (ActivityThread.java:7690)
at java.lang.reflect.Method.invoke (Method.java)
at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run (RuntimeInit.java:593)
at com.android.internal.os.ZygoteInit.main (ZygoteInit.java:995)
A similar crash was also occurring with version 0.0.27.
Thanks for the report, I'll dig in.
It's presumably failing here
https://github.com/google/horologist/blob/v0.1.11/compose-layout/src/main/java/com/google/android/horologist/compose/navscaffold/WearNavScaffold.kt#L103
But the line number isn't helpful and I'm not sure how it can get into that state?
I'll try a fix to avoid NPE here, defaulting to index 1, and offset 0. If you can test with a new release, or give any other insight into the context it would be great.
Maybe fixed, can you let me know if you see it with 0.1.12?
Ah that was very fast, thank you! I'll go give it a try.
I haven't seen the crash come back. Looks like we're good now! Thank you again.