使用撰写视图从片段导航回来时崩溃

nab*_*eel 5 android android-architecture-navigation android-jetpack-compose

时间线片段

class TimelineFragment : Fragment() {

    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        
        val axis = MaterialSharedAxis.Z

        val forward = MaterialSharedAxis(axis, true)
        val backward = MaterialSharedAxis(axis, false)

        enterTransition = forward
        exitTransition = forward
        reenterTransition = backward
        returnTransition = backward
    }

    override fun onCreateView(
        inflater: LayoutInflater,
        container: ViewGroup?,
        savedInstanceState: Bundle?
    ) = ComposeView(requireActivity()).apply { 
        setContent { 
            Text(text = "Testing")
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

当从此片段单击后退按钮时,应用程序崩溃并打印此堆栈跟踪

E/AndroidRuntime: FATAL EXCEPTION: main
Process: com.farmersbyte.agripro, PID: 8524
java.lang.UnsupportedOperationException: Cannot add views to ComposeView; only Compose content is supported
    at androidx.compose.ui.platform.AbstractComposeView.checkAddView(ComposeView.android.kt:202)
    at androidx.compose.ui.platform.AbstractComposeView.addView(ComposeView.android.kt:346)
    at androidx.transition.TransitionUtils.createViewBitmap(TransitionUtils.java:138)
    at androidx.transition.TransitionUtils.copyViewImage(TransitionUtils.java:64)
    at androidx.transition.Visibility.onDisappear(Visibility.java:404)
    at androidx.transition.Visibility.createAnimator(Visibility.java:257)
    at androidx.transition.Transition.createAnimators(Transition.java:744)
    at androidx.transition.TransitionSet.createAnimators(TransitionSet.java:480)
    at androidx.transition.TransitionSet.createAnimators(TransitionSet.java:480)
    at androidx.transition.Transition.playTransition(Transition.java:1808)
    at androidx.transition.TransitionManager$MultiListener.onPreDraw(TransitionManager.java:300)
    at android.view.ViewTreeObserver.dispatchOnPreDraw(ViewTreeObserver.java:1088)
    at android.view.ViewRootImpl.performTraversals(ViewRootImpl.java:2745)
    at android.view.ViewRootImpl.doTraversal(ViewRootImpl.java:1721)
    at android.view.ViewRootImpl$TraversalRunnable.run(ViewRootImpl.java:7598)
    at android.view.Choreographer$CallbackRecord.run(Choreographer.java:966)
    at android.view.Choreographer.doCallbacks(Choreographer.java:790)
    at android.view.Choreographer.doFrame(Choreographer.java:725)
    at android.view.Choreographer$FrameDisplayEventReceiver.run(Choreographer.java:951)
    at android.os.Handler.handleCallback(Handler.java:883)
    at android.os.Handler.dispatchMessage(Handler.java:100)
    at android.os.Looper.loop(Looper.java:214)
    at android.app.ActivityThread.main(ActivityThread.java:7356)
    at java.lang.reflect.Method.invoke(Native Method)
    at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:492)
    at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:930)
Run Code Online (Sandbox Code Playgroud)

使用jetpack导航组件进行片段导航。仅当在片段设置了过渡的情况下后按时才会发生崩溃MaterialSharedAxis

编辑:撰写中没有问题1.0.1,但在版本及更高版本中出现崩溃1.1.0

nab*_*eel 5

通过设置isTransitionGrouptruefor解决ComposeView

示例代码:

class TestFragment : Fragment() {

    override fun onCreateView(
        inflater: LayoutInflater,
        container: ViewGroup?,
        savedInstanceState: Bundle?
    ) = ComposeView(context).apply {
        isTransitionGroup = true 
    }

}
Run Code Online (Sandbox Code Playgroud)