SceneView / sceneview-android

SceneView is a 3D and AR Android Composable and View with Google Filament and ARCore. This is a Sceneform replacement in Kotlin
Apache License 2.0
815 stars 159 forks source link

NullPointerException on screen rotation #454

Closed JeromeCHA closed 4 months ago

JeromeCHA commented 6 months ago

Just with the following basic code, when you rotate the phone, it crashes with a NullPointerException on version 2.1.0. It doesn't crash on previous versions. Do we need to do something now to avoid that?

binding.sceneView.apply {
    val modelNode = ModelNode(
        modelInstance = modelLoader.createModelInstance(R.raw.model)
    )
    addChildNode(modelNode)
}

Log :

AndroidRuntime           E  FATAL EXCEPTION: main
                            Process: com.example.sceneviewsample, PID: 19212
                            java.lang.RuntimeException: Unable to destroy activity {com.example.sceneviewsample/com.example.sceneviewsample.MainActivity}: java.lang.NullPointerException
                                at android.app.ActivityThread.performDestroyActivity(ActivityThread.java:5613)
                                at android.app.ActivityThread.handleDestroyActivity(ActivityThread.java:5645)
                                at android.app.ActivityThread.handleRelaunchActivityInner(ActivityThread.java:5923)
                                at android.app.ActivityThread.handleRelaunchActivity(ActivityThread.java:5842)
                                at android.app.servertransaction.ActivityRelaunchItem.execute(ActivityRelaunchItem.java:76)
                                at android.app.servertransaction.ActivityTransactionItem.execute(ActivityTransactionItem.java:45)
                                at android.app.servertransaction.TransactionExecutor.executeCallbacks(TransactionExecutor.java:139)
                                at android.app.servertransaction.TransactionExecutor.execute(TransactionExecutor.java:96)
                                at android.app.ActivityThread$H.handleMessage(ActivityThread.java:2443)
                                at android.os.Handler.dispatchMessage(Handler.java:106)
                                at android.os.Looper.loopOnce(Looper.java:205)
                                at android.os.Looper.loop(Looper.java:294)
                                at android.app.ActivityThread.main(ActivityThread.java:8177)
                                at java.lang.reflect.Method.invoke(Native Method)
                                at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:552)
                                at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:971)
                            Caused by: java.lang.NullPointerException
                                at io.github.sceneview.components.CameraComponent$DefaultImpls.getCamera(CameraComponent.kt:30)
                                at io.github.sceneview.node.CameraNode.getCamera(CameraNode.kt:27)
                                at io.github.sceneview.node.CameraNode.destroy(CameraNode.kt:330)
                                at io.github.sceneview.SceneView.destroy(SceneView.kt:612)
                                at io.github.sceneview.SceneView$LifeCycleObserver.onDestroy(SceneView.kt:843)
                                at androidx.lifecycle.DefaultLifecycleObserverAdapter.onStateChanged(DefaultLifecycleObserverAdapter.kt:29)
                                at androidx.lifecycle.LifecycleRegistry$ObserverWithState.dispatchEvent(LifecycleRegistry.kt:322)
                                at androidx.lifecycle.LifecycleRegistry.backwardPass(LifecycleRegistry.kt:273)
                                at androidx.lifecycle.LifecycleRegistry.sync(LifecycleRegistry.kt:290)
                                at androidx.lifecycle.LifecycleRegistry.moveToState(LifecycleRegistry.kt:143)
                                at androidx.lifecycle.LifecycleRegistry.handleLifecycleEvent(LifecycleRegistry.kt:126)
                                at androidx.lifecycle.ReportFragment$Companion.dispatch$lifecycle_runtime_release(ReportFragment.kt:190)
                                at androidx.lifecycle.ReportFragment$LifecycleCallbacks.onActivityPreDestroyed(ReportFragment.kt:146)
                                at android.app.Activity.dispatchActivityPreDestroyed(Activity.java:1602)
                                at android.app.Activity.performDestroy(Activity.java:8871)
                                at android.app.Instrumentation.callActivityOnDestroy(Instrumentation.java:1491)
                                at android.app.ActivityThread.performDestroyActivity(ActivityThread.java:5600)
                                at android.app.ActivityThread.handleDestroyActivity(ActivityThread.java:5645) 
                                at android.app.ActivityThread.handleRelaunchActivityInner(ActivityThread.java:5923) 
                                at android.app.ActivityThread.handleRelaunchActivity(ActivityThread.java:5842) 
                                at android.app.servertransaction.ActivityRelaunchItem.execute(ActivityRelaunchItem.java:76) 
                                at android.app.servertransaction.ActivityTransactionItem.execute(ActivityTransactionItem.java:45) 
                                at android.app.servertransaction.TransactionExecutor.executeCallbacks(TransactionExecutor.java:139) 
                                at android.app.servertransaction.TransactionExecutor.execute(TransactionExecutor.java:96) 
                                at android.app.ActivityThread$H.handleMessage(ActivityThread.java:2443) 
                                at android.os.Handler.dispatchMessage(Handler.java:106) 
                                at android.os.Looper.loopOnce(Looper.java:205) 
                                at android.os.Looper.loop(Looper.java:294) 
                                at android.app.ActivityThread.main(ActivityThread.java:8177) 
                                at java.lang.reflect.Method.invoke(Native Method) 
                                at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:552) 
                                at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:971) 
afpatmin commented 5 months ago

450

ThomasGorisse commented 4 months ago

Duplicate: #475 Fixed in 2.2.0