Java 使用Jetpack导航时,Compose Fragment会使应用程序崩溃

Java 使用Jetpack导航时,Compose Fragment会使应用程序崩溃,java,android,kotlin,android-jetpack-compose,Java,Android,Kotlin,Android Jetpack Compose,我目前在Jetpack Compose中面临一个非常奇怪的问题。我正在使用导航组件库(在NavHostFragment中托管片段)。一些较新的片段已经在使用Compose,但我在一个罕见的情况下遇到了这种崩溃。主要是在使用导航抽屉导航到“设置”页面并单击底部导航视图中的某个项目时。我目前正在使用Jetpack Compose alpha-12和Navigation 2.3.0 (使用普通视图绑定时不会崩溃) @AndroidEntryPoint 类StatisticsFragment:Frag

我目前在Jetpack Compose中面临一个非常奇怪的问题。我正在使用导航组件库(在NavHostFragment中托管片段)。一些较新的片段已经在使用Compose,但我在一个罕见的情况下遇到了这种崩溃。主要是在使用导航抽屉导航到“设置”页面并单击底部导航视图中的某个项目时。我目前正在使用Jetpack Compose alpha-12和Navigation 2.3.0

(使用普通视图绑定时不会崩溃)

@AndroidEntryPoint
类StatisticsFragment:Fragment(){
覆盖创建视图(
充气机,
容器:视图组?,
savedInstanceState:捆绑?
):查看{
返回ComposeView(requireContext())。应用{
设置内容{
颞位{
文本(“你好,撰写!”)
}
}
}
}
}

java.lang.NullPointerException:尝试在空对象引用上调用接口方法“void androidx.compose.runtime.MutableState.setValue(java.lang.Object)”
位于androidx.compose.ui.platform.AndroidComposeView.setLayoutDirection(AndroidComposeView.kt:797)
在androidx.compose.ui.platform.AndroidComposeView.onrtlproperty中更改(AndroidComposeView.kt:724)
位于android.view.view.resolvePadding(view.java:20272)
在android.view.ViewGroup.resolvePadding(ViewGroup.java:7765)中
在android.view.view.initializeScrollbarsInternal(view.java:6781)中
在android.view.view.(view.java:6112)
位于android.view.ViewGroup(ViewGroup.java:697)
在android.view.ViewGroup。(ViewGroup.java:693)
在android.view.ViewGroup。(ViewGroup.java:689)
在android.view.ViewGroup。(ViewGroup.java:685)
在androidx.compose.ui.platform.AndroidComposeView.(AndroidComposeView.kt:116)
位于androidx.compose.ui.platform.WrapperKt.setContent(Wrapper.kt:123)
在androidx.compose.ui.platform.AbstractComposeView.com上创建(ComposeView.kt:183)
位于androidx.compose.ui.platform.AbstractComposeView.onAttachedToWindow(ComposeView.kt:215)
在android.view.view.dispatchAttachedToWindow(view.java:20479)
位于android.view.ViewGroup.dispatchAttachedToWindow(ViewGroup.java:3489)
在android.view.ViewGroup.addViewInner(ViewGroup.java:5278)
在android.view.ViewGroup.addView(ViewGroup.java:5064)中
位于androidx.fragment.app.FragmentContainerView.addView(FragmentContainerView.java:290)
在android.view.ViewGroup.addView(ViewGroup.java:5004)中
位于androidx.fragment.app.FragmentStateManager.addViewToContainer(FragmentStateManager.java:830)
位于androidx.fragment.app.FragmentStateManager.createView(FragmentStateManager.java:520)
位于androidx.fragment.app.FragmentStateManager.moveToExpectedState(FragmentStateManager.java:282)
在androidx.fragment.app.FragmentManager.ExecutePostGether(FragmentManager.java:2177)
位于androidx.fragment.app.FragmentManager.RemovedAndTopOperationsAndExecute(FragmentManager.java:2094)
位于androidx.fragment.app.FragmentManager.ExecutPendingActions(FragmentManager.java:1990)
位于androidx.fragment.app.FragmentManager$5.run(FragmentManager.java:524)
位于android.os.Handler.handleCallback(Handler.java:938)
位于android.os.Handler.dispatchMessage(Handler.java:99)
位于android.os.Looper.loop(Looper.java:223)
位于android.app.ActivityThread.main(ActivityThread.java:7660)
位于java.lang.reflect.Method.invoke(本机方法)
位于com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:592)
位于com.android.internal.os.ZygoteInit.main(ZygoteInit.java:947)

随着compose的beta 06版,错误消失了

这方面运气好吗?不幸的是,我目前坚持使用视图绑定,只在应用程序的完全不同部分使用compose。希望这是一个可以在以后版本中修复的bug。@AndréRamon我为类似的东西提交了一个bug。你可能想成为明星?我将用beta-02重试。似乎用beta-06修复了
<?xml version="1.0" encoding="utf-8"?>
<androidx.drawerlayout.widget.DrawerLayout
    ...>

    <RelativeLayout
        ...>

        <RelativeLayout
            ...>

            <com.google.android.material.appbar.MaterialToolbar
                ... />

        </RelativeLayout>

        <!-- NavHost -->
        <androidx.fragment.app.FragmentContainerView
            android:id="@+id/nav_host_fragment"
            android:name="androidx.navigation.fragment.NavHostFragment"
            app:defaultNavHost="true"
            app:navGraph="@navigation/navigation_main"
            ... />

        <com.google.android.material.bottomnavigation.BottomNavigationView
            ... />

    </RelativeLayout>

    <com.google.android.material.navigation.NavigationView
        .../>

</androidx.drawerlayout.widget.DrawerLayout>

java.lang.NullPointerException: Attempt to invoke interface method 'void androidx.compose.runtime.MutableState.setValue(java.lang.Object)' on a null object reference
        at androidx.compose.ui.platform.AndroidComposeView.setLayoutDirection(AndroidComposeView.kt:797)
        at androidx.compose.ui.platform.AndroidComposeView.onRtlPropertiesChanged(AndroidComposeView.kt:724)
        at android.view.View.resolvePadding(View.java:20272)
        at android.view.ViewGroup.resolvePadding(ViewGroup.java:7765)
        at android.view.View.initializeScrollbarsInternal(View.java:6781)
        at android.view.View.<init>(View.java:6112)
        at android.view.ViewGroup.<init>(ViewGroup.java:697)
        at android.view.ViewGroup.<init>(ViewGroup.java:693)
        at android.view.ViewGroup.<init>(ViewGroup.java:689)
        at android.view.ViewGroup.<init>(ViewGroup.java:685)
        at androidx.compose.ui.platform.AndroidComposeView.<init>(AndroidComposeView.kt:116)
        at androidx.compose.ui.platform.WrapperKt.setContent(Wrapper.kt:123)
        at androidx.compose.ui.platform.AbstractComposeView.ensureCompositionCreated(ComposeView.kt:183)
        at androidx.compose.ui.platform.AbstractComposeView.onAttachedToWindow(ComposeView.kt:215)
        at android.view.View.dispatchAttachedToWindow(View.java:20479)
        at android.view.ViewGroup.dispatchAttachedToWindow(ViewGroup.java:3489)
        at android.view.ViewGroup.addViewInner(ViewGroup.java:5278)
        at android.view.ViewGroup.addView(ViewGroup.java:5064)
        at androidx.fragment.app.FragmentContainerView.addView(FragmentContainerView.java:290)
        at android.view.ViewGroup.addView(ViewGroup.java:5004)
        at androidx.fragment.app.FragmentStateManager.addViewToContainer(FragmentStateManager.java:830)
        at androidx.fragment.app.FragmentStateManager.createView(FragmentStateManager.java:520)
        at androidx.fragment.app.FragmentStateManager.moveToExpectedState(FragmentStateManager.java:282)
        at androidx.fragment.app.FragmentManager.executeOpsTogether(FragmentManager.java:2177)
        at androidx.fragment.app.FragmentManager.removeRedundantOperationsAndExecute(FragmentManager.java:2094)
        at androidx.fragment.app.FragmentManager.execPendingActions(FragmentManager.java:1990)
        at androidx.fragment.app.FragmentManager$5.run(FragmentManager.java:524)
        at android.os.Handler.handleCallback(Handler.java:938)
        at android.os.Handler.dispatchMessage(Handler.java:99)
        at android.os.Looper.loop(Looper.java:223)
        at android.app.ActivityThread.main(ActivityThread.java:7660)
        at java.lang.reflect.Method.invoke(Native Method)
        at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:592)
        at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:947)