Android Compose 无法在 android studio 中预览可组合功能“渲染问题”

Dav*_*him 4 android android-jetpack-compose

我无法预览下面代码中显示的可组合函数

\n
@Preview\n@Composable\nfun StartingConversationInstructions() {\n    Column {\n        Text(stringResource(id = R.string.remember))\n\n    }\n}\n
Run Code Online (Sandbox Code Playgroud)\n

但当我尝试预览该功能时出现此错误

\n
java.lang.NoSuchMethodError: \'androidx.compose.runtime.SlotTable\nandroidx.compose.runtime.Composer.getSlotTable()\' \xc2\xa0\xc2\xa0at \nandroidx.ui.tooling.InspectableKt.Inspectable(Inspectable.kt:63) \xc2\xa0\xc2\xa0at \nandroidx.ui.tooling.preview.ComposeViewAdapter$WrapPreview$1.invoke(ComposeViewAdapter.kt:357) \xc2\xa0\xc2\xa0at\n androidx.ui.tooling.preview.ComposeViewAdapter$WrapPreview$1.invoke(ComposeViewAdapter.kt:-1) \xc2\xa0\xc2\xa0at\n androidx.compose.runtime.internal.ComposableLambda.invoke(ComposableLambda.kt:146) \xc2\xa0\xc2\xa0at \nandroidx.compose.runtime.internal.ComposableLambda.invoke(ComposableLambda.kt:-1) \xc2\xa0\xc2\xa0at \nandroidx.compose.runtime.AmbientKt.Providers(Ambient.kt:188) \xc2\xa0\xc2\xa0at \nandroidx.ui.tooling.preview.ComposeViewAdapter.WrapPreview(ComposeViewAdapter.kt:356) \xc2\xa0\xc2\xa0at \nandroidx.ui.tooling.preview.ComposeViewAdapter.access$WrapPreview(ComposeViewAdapter.kt:-1) \xc2\xa0\xc2\xa0at \nandroidx.ui.tooling.preview.ComposeViewAdapter$init$1.invoke(ComposeViewAdapter.kt:397) \xc2\xa0\xc2\xa0at \nandroidx.ui.tooling.preview.ComposeViewAdapter$init$1.invoke(ComposeViewAdapter.kt:-1) \xc2\xa0\xc2\xa0at \nandroidx.compose.runtime.internal.ComposableLambda.invoke(ComposableLambda.kt:146) \xc2\xa0\xc2\xa0at \nandroidx.compose.runtime.internal.ComposableLambda.invoke(ComposableLambda.kt:-1) \xc2\xa0\xc2\xa0at \nandroidx.compose.runtime.AmbientKt.Providers(Ambient.kt:188) \xc2\xa0\xc2\xa0at \nandroidx.compose.ui.platform.AmbientsKt.ProvideCommonAmbients(Ambients.kt:274) \xc2\xa0\xc2\xa0at \nandroidx.compose.ui.platform.AndroidAmbientsKt$ProvideAndroidAmbients$3.invoke(AndroidAmbients.kt:176) \xc2\xa0\xc2\xa0at \nandroidx.compose.ui.platform.AndroidAmbientsKt$ProvideAndroidAmbients$3.invoke(AndroidAmbients.kt:-1) \xc2\xa0\xc2\xa0at androidx.compose.runtime.internal.ComposableLambda.invoke(ComposableLambda.kt:146) \xc2\xa0\xc2\xa0at \nandroidx.compose.runtime.internal.ComposableLambda.invoke(ComposableLambda.kt:-1) \xc2\xa0\xc2\xa0at \nandroidx.compose.runtime.AmbientKt.Providers(Ambient.kt:188) \xc2\xa0\xc2\xa0at \nandroidx.compose.ui.platform.AndroidAmbientsKt.ProvideAndroidAmbients(AndroidAmbients.kt:168) \xc2\xa0\xc2\xa0at \nandroidx.compose.ui.platform.WrappedComposition$setContent$1$1$2.invoke(Wrapper.kt:251) \xc2\xa0\xc2\xa0at \nandroidx.compose.ui.platform.WrappedComposition$setContent$1$1$2.invoke(Wrapper.kt:-1) \xc2\xa0\xc2\xa0at \nandroidx.compose.runtime.internal.ComposableLambda.invoke(ComposableLambda.kt:146) \xc2\xa0\xc2\xa0at \nandroidx.compose.runtime.internal.ComposableLambda.invoke(ComposableLambda.kt:-1) \xc2\xa0\xc2\xa0at \nandroidx.compose.runtime.AmbientKt.Providers(Ambient.kt:188) \xc2\xa0\xc2\xa0at \nandroidx.compose.ui.platform.WrappedComposition$setContent$1$1.invoke(Wrapper.kt:250) \xc2\xa0\xc2\xa0at \nandroidx.compose.ui.platform.WrappedComposition$setContent$1$1.invoke(Wrapper.kt:-1) \xc2\xa0\xc2\xa0at \n.compose.runtime.internal.ComposableLambda.invoke(ComposableLambda.kt:146) \xc2\xa0\xc2\xa0at \nandroidx.compose.runtime.internal.ComposableLambda.invoke(ComposableLambda.kt:-1) \xc2\xa0\xc2\xa0at \nandroidx.compose.runtime.ComposerKt.invokeComposable(Composer.kt:2904) \xc2\xa0\xc2\xa0at \nandroidx.compose.runtime.Composer.composeInitial(Composer.kt:2070) \xc2\xa0\xc2\xa0at \nandroidx.compose.runtime.Recomposer.composeInitial$runtime_release(Recomposer.kt:353) \xc2\xa0\xc2\xa0at \nandroidx.compose.runtime.CompositionImpl.setContent(Composition.kt:109) \xc2\xa0\xc2\xa0at \nandroidx.compose.ui.platform.WrappedComposition$setContent$1.invoke(Wrapper.kt:235) \xc2\xa0\xc2\xa0at \nandroidx.compose.ui.platform.WrappedComposition$setContent$1.invoke(Wrapper.kt:-1) \xc2\xa0\xc2\xa0at \nandroidx.compose.ui.platform.AndroidComposeView.setOnViewTreeOwnersAvailable(AndroidComposeView.kt:545) \n\xc2\xa0\xc2\xa0at androidx.compose.ui.platform.WrappedComposition.setContent(Wrapper.kt:226) \xc2\xa0\xc2\xa0at \nandroidx.compose.ui.platform.WrappedComposition.onStateChanged(Wrapper.kt:275) \xc2\xa0\xc2\xa0at \nandroidx.lifecycle.LifecycleRegistry$ObserverWithState.dispatchEvent(LifecycleRegistry.java:354) \xc2\xa0\xc2\xa0at \nandroidx.lifecycle.LifecycleRegistry.addObserver(LifecycleRegistry.java:196) \xc2\xa0\xc2\xa0at \nandroidx.compose.ui.platform.WrappedComposition$setContent$1.invoke(Wrapper.kt:233) \xc2\xa0\xc2\xa0at \nandroidx.compose.ui.platform.WrappedComposition$setContent$1.invoke(Wrapper.kt:-1) \xc2\xa0\xc2\xa0at \nandroidx.compose.ui.platform.AndroidComposeView.onAttachedToWindow(AndroidComposeView.kt:610) \xc2\xa0\xc2\xa0at \nandroid.view.View.dispatchAttachedToWindow(View.java:20479) \xc2\xa0\xc2\xa0at \nandroid.view.ViewGroup.dispatchAttachedToWindow(ViewGroup.java:3489) \xc2\xa0\xc2\xa0at \nandroid.view.ViewGroup.dispatchAttachedToWindow(ViewGroup.java:3496) \xc2\xa0\xc2\xa0at \nandroid.view.ViewGroup.dispatchAttachedToWindow(ViewGroup.java:3496) \xc2\xa0\xc2\xa0at \nandroid.view.ViewGroup.dispatchAttachedToWindow(ViewGroup.java:3496) \xc2\xa0\xc2\xa0at \nandroid.view.ViewGroup.dispatchAttachedToWindow(ViewGroup.java:3496) \xc2\xa0\xc2\xa0at \nandroid.view.AttachInfo_Accessor.setAttachInfo(AttachInfo_Accessor.java:44) Copy stack to clipboard  \n Tip: Try to refresh the layout. \n
Run Code Online (Sandbox Code Playgroud)\n



\n我使用的是android studio版本:Android Studio Arctic Fox | 2020.3.1 Canary 4
\n和 Android Compose 版本:1.0.0-alpha09

\n我认为这是问题的原因,因为正如您可以在此版本的更改中找到的那样

\n
\n

从公共 API 中删除了 SlotTable、SlotReader 和 SlotWriter。这些以前被标记为InternalComposeAPI。现在它们位于撰写模块的内部。

\n
\n

Cod*_*oet 12

在你的依赖项中,改变

implementation "androidx.ui:ui-tooling:$compose_version"
Run Code Online (Sandbox Code Playgroud)

implementation "androidx.compose.ui:ui-tooling:$compose_version"
Run Code Online (Sandbox Code Playgroud)

那样有用吗?

  • 遗憾的是 `"androidx.compose.ui:ui-tooling:$compose_version"` 没有解决它。 (3认同)