簡體   English   中英

E/GlanceAppWidget:Glance App Widget 中的錯誤 IllegalStateException:CompositionLocal LocalConfiguration 不存在

[英]E/GlanceAppWidget: Error in Glance App Widget IllegalStateException: CompositionLocal LocalConfiguration not present

我正在用 compose 開發一個應用程序小部件。 我從資源中獲取字符串時遇到問題。 如果我將文本作為text = "Label"之類的字符串提供,則它可以正常工作。 但是,如果我使用 stringResource,則不會顯示文本,我會看到這個問題。 有沒有人遇到過這個問題? 謝謝

E/GlanceAppWidget: Error in Glance App Widget
    java.lang.IllegalStateException: CompositionLocal LocalConfiguration not present
        at androidx.compose.ui.platform.AndroidCompositionLocals_androidKt.noLocalProvidedFor(AndroidCompositionLocals.android.kt:167)
        at androidx.compose.ui.platform.AndroidCompositionLocals_androidKt.access$noLocalProvidedFor(AndroidCompositionLocals.android.kt:1)
        at androidx.compose.ui.platform.AndroidCompositionLocals_androidKt$LocalConfiguration$1.invoke(AndroidCompositionLocals.android.kt:47)
        at androidx.compose.ui.platform.AndroidCompositionLocals_androidKt$LocalConfiguration$1.invoke(AndroidCompositionLocals.android.kt:44)
        at kotlin.SynchronizedLazyImpl.getValue(LazyJVM.kt:74)
        at androidx.compose.runtime.LazyValueHolder.getCurrent(ValueHolders.kt:29)
        at androidx.compose.runtime.LazyValueHolder.getValue(ValueHolders.kt:31)
        at androidx.compose.runtime.ComposerImpl.resolveCompositionLocal(Composer.kt:1776)
        at androidx.compose.runtime.ComposerImpl.consume(Composer.kt:1746)
        at androidx.compose.ui.res.StringResources_androidKt.resources(StringResources.android.kt:78)
        at androidx.compose.ui.res.StringResources_androidKt.stringResource(StringResources.android.kt:36)
class MarketWidget : GlanceAppWidget() {

    @Composable
    override fun Content() {
        Column(
            modifier = GlanceModifier
                .fillMaxSize()
                .background(color = Color.White)
                .padding(8.dp)
        ) {
            Text(
                text = stringResource(id = R.string.app_name)
            )
        }
    }
}

stringResource 是 Compose UI 的一部分,因此您不能在 Glance 中使用它。 Glance 的 Text 只接受已解析的字符串,您可以使用 LocalContext.current 檢索它。

要更改您的示例,這應該有效:

Text(text = LocalContext.current.getString(R.string.app_name))

此外,請確保您導入的是 Glance 文本 (androidx.glance.text.Text),而不是來自 Material Compose UI (androidx.compose.material.Text) 的文本

暫無
暫無

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

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