簡體   English   中英

Android Compose 無法在 android 工作室“渲染問題”中預覽可組合 function

[英]Android Compose cannot preview composable function in android studio “Rendering problem ”

我無法預覽下面代碼中顯示的可組合 function

@Preview
@Composable
fun StartingConversationInstructions() {
    Column {
        Text(stringResource(id = R.string.remember))

    }
}

但是當我嘗試預覽 function 時出現此錯誤

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



我用的是android工作室版: Android工作室北極狐| 2020.3.1 金絲雀 4
和 Android 組成版本: 1.0.0-alpha09

我認為這是問題的原因,因為您可以在此版本的更改中找到

從公共 API 中刪除了 SlotTable、SlotReader 和 SlotWriter。 這些以前被標記為 InternalComposeAPI。 現在它們在 compose 模塊內部。

在你的依賴中,改變

implementation "androidx.ui:ui-tooling:$compose_version"

implementation "androidx.compose.ui:ui-tooling:$compose_version"

那樣有用嗎?

正如@author 在他的評論中所說,有兩個相同的注釋:

import androidx.ui.tooling.preview.Preview
import androidx.compose.ui.tooling.preview.Preview

第二個對我有用。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM