Я следую документации Android Glance (https://developer.android.com/jetpack/c ... app-widget), чтобы создать виджет. Пользовательский интерфейс виджета определен в составной функции MyContent.
Я пытаюсь просмотреть пользовательский интерфейс, добавив составной предварительный просмотр...
@Preview(showBackground = true)
@Composable
fun ContentPreview() {
MyContent()
}
Но я получаю сообщение об ошибке: «Не удалось создать экземпляр локальной композиции».
This preview was unable to find a CompositionLocal. You might need to define it so it can render correctly.
Как правильно просмотреть виджет приложения Glance?
Я могу создать и запустить виджет на своем физическом устройстве, но мне нужна возможность предварительного просмотра виджета в Android Studio, аналогично тому, как мы можем просматривать другие функции Composable.
Full StackTrace:
java.lang.IllegalStateException: I n v a l i d a p p l i e r < b r / > a t a n d r o i d x . c o m p o s e . r u n t i m e . C o m p o s a b l e s K t . i n v a l i d A p p l i e r ( C o m p o s a b l e s . k t : 4 7 2 ) < b r / > a t a n d r o i d x . g l a n c e . l a y o u t . C o l u m n K t . C o l u m n - K 4 G K K T E ( C o l u m n . k t : 1 0 2 ) < b r / > a t c o m . e x a m p l e . m y p r o j e c t . M y A p p W i d g e t K t . M y C o n t e n t ( M y A p p W i d g e t . k t : 4 6 ) < b r / > a t c o m . e x a m p l e . m y p r o j e c t . M y A p p W i d g e t K t . C o n t e n t P r e v i e w ( M y A p p W i d g e t . k t : 6 9 ) < b r / > a t j a v a . b a s e / j d k . i n t e r n a l . r e f l e c t . N a t i v e M e t h o d A c c e s s o r I m p l . i n v o k e 0 ( N a t i v e M e t h o d ) < b r / > a t j a v a . b a s e / j d k . i n t e r n a l . r e f l e c t . N a t i v e M e t h o d A c c e s s o r I m p l . i n v o k e ( N a t i v e M e t h o d A c c e s s o r I m p l . j a v a : 7 7 ) < b r / > a t j a v a . b a s e / j d k . i n t e r n a l . r e f l e c t . D e l e g a t i n g M e t h o d A c c e s s o r I m p l . i n v o k e ( D e l e g a t i n g M e t h o d A c c e s s o r I m p l . j a v a : 4 3 ) < b r / > a t j a v a . b a s e / j a v a . l a n g . r e f l e c t . M e t h o d . i n v o k e ( M e t h o d . j a v a : 5 6 8 ) < b r / > a t a n d r o i d x . c o m p o s e . u i . t o o l i n g . C o m p o s a b l e I n v o k e r . i n v o k e C o m p o s a b l e M e t h o d ( C o m p o s a b l e I n v o k e r . k t : 1 6 3 ) < b r / > a t a n d r o i d x . c o m p o s e . u i . t o o l i n g . C o m p o s a b l e I n v o k e r . i n v o k e C o m p o s a b l e ( C o m p o s a b l e I n v o k e r . k t : 2 0 3 ) < b r / > a t a n d r o i d x . c o m p o s e . u i . t o o l i n g . C o m p o s e V i e w A d a p t e r $ i n i t $ 3 $ 1 $ c o m p o s a b l e $ 1 . i n v o k e ( C o m p o s e V i e w A d a p t e r . k t : 5 0 9 ) < b r / > a t a n d r o i d x . c o m p o s e . u i . t o o l i n g . C o m p o s e V i e w A d a p t e r $ i n i t $ 3 $ 1 $ c o m p o s a b l e $ 1 . i n v o k e ( C o m p o s e V i e w A d a p t e r . k t : 5 0 7 ) < b r / > a t a n d r o i d x . c o m p o s e . u i . t o o l i n g . C o m p o s e V i e w A d a p t e r $ i n i t $ 3 $ 1 . i n v o k e ( C o m p o s e V i e w A d a p t e r . k t : 5 4 4 ) < b r / > a t a n d r o i d x . c o m p o s e . u i . t o o l i n g . C o m p o s e V i e w A d a p t e r $ i n i t $ 3 $ 1 . i n v o k e ( C o m p o s e V i e w A d a p t e r . k t : 5 0 2 ) < b r / > a t a n d r o i d x . c o m p o s e . r u n t i m e . i n t e r n a l . C o m p o s a b l e L a m b d a I m p l . i n v o k e ( C o m p o s a b l e L a m b d a . j v m . k t : 1 0 8 ) < b r / > a t a n d r o i d x . c o m p o s e . r u n t i m e . i n t e r n a l . C o m p o s a b l e L a m b d a I m p l . i n v o k e ( C o m p o s a b l e L a m b d a . j v m . k t : 3 5 ) < b r / > a t a n d r o i d x . c o m p o s e . r u n t i m e . C o m p o s i t i o n L o c a l K t . C o m p o s i t i o n L o c a l P r o v i d e r ( C o m p o s i t i o n L o c a l . k t : 2 2 8 ) < b r / > a t a n d r o i d x . c o m p o s e . u i . t o o l i n g . I n s p e c t a b l e K t . I n s p e c t a b l e ( I n s p e c t a b l e . k t : 6 1 ) < b r / > a t a n d r o i d x . c o m p o s e . u i . t o o l i n g . C o m p o s e V i e w A d a p t e r $ W r a p P r e v i e w $ 1 . i n v o k e ( C o m p o s e V i e w A d a p t e r . k t : 4 4 9 ) < b r / > a t a n d r o i d x . c o m p o s e . u i . t o o l i n g . C o m p o s e V i e w A d a p t e r $ W r a p P r e v i e w $ 1 . i n v o k e ( C o m p o s e V i e w A d a p t e r . k t : 4 4 8 ) < b r / > a t a n d r o i d x . c o m p o s e . r u n t i m e . i n t e r n a l . C o m p o s a b l e L a m b d a I m p l . i n v o k e ( C o m p o s a b l e L a m b d a . j v m . k t : 1 0 8 ) < b r / > a t a n d r o i d x . c o m p o s e . r u n t i m e . i n t e r n a l . C o m p o s a b l e L a m b d a I m p l . i n v o k e ( C o m p o s a b l e L a m b d a . j v m . k t : 3 5 ) < b r / > a t a n d r o i d x . c o m p o s e . r u n t i m e . C o m p o s i t i o n L o c a l K t . C o m p o s i t i o n L o c a l P r o v i d e r ( C o m p o s i t i o n L o c a l . k t : 2 2 8 ) < b r / > a t a n d r o i d x . c o m p o s e . u i . t o o l i n g . C o m p o s e V i e w A d a p t e r . W r a p P r e v i e w ( C o m p o s e V i e w A d a p t e r . k t : 4 4 3 ) < b r / > a t a n d r o i d x . c o m p o s e . u i . t o o l i n g . C o m p o s e V i e w A d a p t e r . a c c e s s $ W r a p P r e v i e w ( C o m p o s e V i e w A d a p t e r . k t : 1 2 7 ) < b r / > a t a n d r o i d x . c o m p o s e . u i . t o o l i n g . C o m p o s e V i e w A d a p t e r $ i n i t $ 3 . i n v o k e ( C o m p o s e V i e w A d a p t e r . k t : 5 0 2 ) < b r / > a t a n d r o i d x . c o m p o s e . u i . t o o l i n g . C o m p o s e V i e w A d a p t e r $ i n i t $ 3 . i n v o k e ( C o m p o s e V i e w A d a p t e r . k t : 4 9 9 ) < b r / > a t a n d r o i d x . c o m p o s e . r u n t i m e . i n t e r n a l . C o m p o s a b l e L a m b d a I m p l . i n v o k e ( C o m p o s a b l e L a m b d a . j v m . k t : 1 0 8 ) < b r / > a t a n d r o i d x . c o m p o s e . r u n t i m e . i n t e r n a l . C o m p o s a b l e L a m b d a I m p l . i n v o k e ( C o m p o s a b l e L a m b d a . j v m . k t : 3 5 ) < b r / > a t a n d r o i d x . c o m p o s e . u i . p l a t f o r m . C o m p o s e V i e w . C o n t e n t ( C o m p o s e V i e w . a n d r o i d . k t : 4 2 8 ) < b r / > a t a n d r o i d x . c o m p o s e . u i . p l a t f o r m . A b s t r a c t C o m p o s e V i e w $ e n s u r e C o m p o s i t i o n C r e a t e d $ 1 . i n v o k e ( C o m p o s e V i e w . a n d r o i d . k t : 2 5 2 ) < b r / > a t a n d r o i d x . c o m p o s e . u i . p l a t f o r m . A b s t r a c t C o m p o s e V i e w $ e n s u r e C o m p o s i t i o n C r e a t e d $ 1 . i n v o k e ( C o m p o s e V i e w . a n d r o i d . k t : 2 5 1 ) < b r / > a t a n d r o i d x . c o m p o s e . r u n t i m e . i n t e r n a l . C o m p o s a b l e L a m b d a I m p l . i n v o k e ( C o m p o s a b l e L a m b d a . j v m . k t : 1 0 8 ) < b r / > a t a n d r o i d x . c o m p o s e . r u n t i m e . i n t e r n a l . C o m p o s a b l e L a m b d a I m p l . i n v o k e ( C o m p o s a b l e L a m b d a . j v m . k t : 3 5 ) < b r / > a t a n d r o i d x . c o m p o s e . r u n t i m e . C o m p o s i t i o n L o c a l K t . C o m p o s i t i o n L o c a l P r o v i d e r ( C o m p o s i t i o n L o c a l . k t : 2 2 8 ) < b r / > a t a n d r o i d x . c o m p o s e . u i . p l a t f o r m . C o m p o s i t i o n L o c a l s K t . P r o v i d e C o m m o n C o m p o s i t i o n L o c a l s ( C o m p o s i t i o n L o c a l s . k t : 1 9 5 ) < b r / > a t a n d r o i d x . c o m p o s e . u i . p l a t f o r m . A n d r o i d C o m p o s i t i o n L o c a l s _ a n d r o i d K t $ P r o v i d e A n d r o i d C o m p o s i t i o n L o c a l s $ 3 . i n v o k e ( A n d r o i d C o m p o s i t i o n L o c a l s . a n d r o i d . k t : 1 1 9 ) < b r / > a t a n d r o i d x . c o m p o s e . u i . p l a t f o r m . A n d r o i d C o m p o s i t i o n L o c a l s _ a n d r o i d K t $ P r o v i d e A n d r o i d C o m p o s i t i o n L o c a l s $ 3 . i n v o k e ( A n d r o i d C o m p o s i t i o n L o c a l s . a n d r o i d . k t : 1 1 8 ) < b r / > a t a n d r o i d x . c o m p o s e . r u n t i m e . i n t e r n a l . C o m p o s a b l e L a m b d a I m p l . i n v o k e ( C o m p o s a b l e L a m b d a . j v m . k t : 1 0 8 ) < b r / > a t a n d r o i d x . c o m p o s e . r u n t i m e . i n t e r n a l . C o m p o s a b l e L a m b d a I m p l . i n v o k e ( C o m p o s a b l e L a m b d a . j v m . k t : 3 5 ) < b r / > a t a n d r o i d x . c o m p o s e . r u n t i m e . C o m p o s i t i o n L o c a l K t . C o m p o s i t i o n L o c a l P r o v i d e r ( C o m p o s i t i o n L o c a l . k t : 2 2 8 ) < b r / > a t a n d r o i d x . c o m p o s e . u i . p l a t f o r m . A n d r o i d C o m p o s i t i o n L o c a l s _ a n d r o i d K t . P r o v i d e A n d r o i d C o m p o s i t i o n L o c a l s ( A n d r o i d C o m p o s i t i o n L o c a l s . a n d r o i d . k t : 1 1 0 ) < b r / > a t a n d r o i d x . c o m p o s e . u i . p l a t f o r m . W r a p p e d C o m p o s i t i o n $ s e t C o n t e n t $ 1 $ 1 $ 2 . i n v o k e ( W r a p p e r . a n d r o i d . k t : 1 5 8 ) < b r / > a t a n d r o i d x . c o m p o s e . u i . p l a t f o r m . W r a p p e d C o m p o s i t i o n $ s e t C o n t e n t $ 1 $ 1 $ 2 . i n v o k e ( W r a p p e r . a n d r o i d . k t : 1 5 7 ) < b r / > a t a n d r o i d x . c o m p o s e . r u n t i m e . i n t e r n a l . C o m p o s a b l e L a m b d a I m p l . i n v o k e ( C o m p o s a b l e L a m b d a . j v m . k t : 1 0 8 ) < b r / > a t a n d r o i d x . c o m p o s e . r u n t i m e .internal.ComposableLambdaImpl.invoke(ComposableLambda.jvm.kt:35)
at androidx.compose.runtime.CompositionLocalKt.CompositionLocalProvider(CompositionLocal.kt:228)
at androidx.compose.ui.platform.WrappedComposition$setContent$1$1.invoke(Wrapper.android.kt:157)
at androidx.compose.ui.platform.WrappedComposition$setContent$1$1.invoke(Wrapper.android.kt:142)
at androidx.compose.runtime.internal.ComposableLambdaImpl.invoke(ComposableLambda.jvm.kt:108)
at androidx.compose.runtime.internal.ComposableLambdaImpl.invoke(ComposableLambda.jvm.kt:35)
at androidx.compose.runtime.ActualJvm_jvmKt.invokeComposable(ActualJvm.jvm.kt:78)
at androidx.compose.runtime.ComposerImpl.doCompose(Composer.kt:3340)
at androidx.compose.runtime.ComposerImpl.composeContent$runtime_release(Composer.kt:3273)
at androidx.compose.runtime.CompositionImpl.composeContent(Composition.kt:588)
at androidx.compose.runtime.Recomposer.composeInitial$runtime_release(Recomposer.kt:1013)
at androidx.compose.runtime.CompositionImpl.setContent(Composition.kt:520)
at androidx.compose.ui.platform.WrappedComposition$setContent$1.invoke(Wrapper.android.kt:142)
at androidx.compose.ui.platform.WrappedComposition$setContent$1.invoke(Wrapper.android.kt:133)
at androidx.compose.ui.platform.AndroidComposeView.setOnViewTreeOwnersAvailable(AndroidComposeView.android.kt:1191)
at androidx.compose.ui.platform.WrappedComposition.setContent(Wrapper.android.kt:133)
at androidx.compose.ui.platform.WrappedComposition.onStateChanged(Wrapper.android.kt:183)
at androidx.lifecycle.LifecycleRegistry$ObserverWithState.dispatchEvent(LifecycleRegistry.kt:314)
at androidx.lifecycle.LifecycleRegistry.addObserver(LifecycleRegistry.kt:192)
at androidx.compose.ui.platform.WrappedComposition$setContent$1.invoke(Wrapper.android.kt:140)
at androidx.compose.ui.platform.WrappedComposition$setContent$1.invoke(Wrapper.android.kt:133)
at androidx.compose.ui.platform.AndroidComposeView.onAttachedToWindow(AndroidComposeView.android.kt:1266)
at android.view.View.dispatchAttachedToWindow(View.java:21291)
at android.view.ViewGroup.dispatchAttachedToWindow(ViewGroup.java:3491)
at android.view.ViewGroup.dispatchAttachedToWindow(ViewGroup.java:3498)
at android.view.ViewGroup.dispatchAttachedToWindow(ViewGroup.java:3498)
at android.view.ViewGroup.dispatchAttachedToWindow(ViewGroup.java:3498)
at android.view.ViewGroup.dispatchAttachedToWindow(ViewGroup.java:3498)
at android.view.ViewGroup.dispatchAttachedToWindow(ViewGroup.java:3498)
at android.view.AttachInfo_Accessor.setAttachInfo(AttachInfo_Accessor.java:54)
at com.android.layoutlib.bridge.impl.RenderSessionImpl.inflate(RenderSessionImpl.java:372)
at com.android.layoutlib.bridge.Bridge.createSession(Bridge.java:450)
at com.android.tools.idea.layoutlib.LayoutLibrary.createSession(LayoutLibrary.java:122)
at com.android.tools.rendering.RenderTask.createRenderSession(RenderTask.java:742)
at com.android.tools.rendering.RenderTask.lambda$inflate$7(RenderTask.java:889)
at com.android.tools.rendering.RenderExecutor$runAsyncActionWithTimeout$3.run(RenderExecutor.kt:202)
at com.android.tools.rendering.RenderExecutor$PriorityRunnable.run(RenderExecutor.kt:316)
at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1136)
at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:635)
at java.base/java.lang.Thread.run(Thread.java:833)
Полный код MyAppWidget.kt
import android.content.Context
import androidx.compose.runtime.Composable
import androidx.compose.ui.tooling.preview.Preview
import androidx.compose.ui.unit.dp
import androidx.glance.GlanceId
import androidx.glance.GlanceModifier
import androidx.glance.appwidget.GlanceAppWidget
import androidx.glance.appwidget.provideContent
import androidx.glance.layout.Column
import androidx.glance.text.Text
import androidx.glance.Button
import androidx.glance.action.actionStartActivity
import androidx.glance.appwidget.action.actionStartActivity
import androidx.glance.layout.Alignment
import androidx.glance.layout.Column
import androidx.glance.layout.Row
import androidx.glance.layout.fillMaxSize
import androidx.glance.layout.padding
import androidx.glance.text.Text
/* Import Glance Composables
In the event there is a name clash with the Compose classes of the same name,
you may rename the imports per https://kotlinlang.org/docs/packages.html#imports
using the `as` keyword.
*/
class MyAppWidget : GlanceAppWidget() {
override suspend fun provideGlance(context: Context, id: GlanceId) {
// Load data needed to render the AppWidget.
// Use `withContext` to switch to another thread for long running
// operations.
provideContent {
// create your AppWidget here
MyContent()
}
}
}
@Composable
private fun MyContent() {
Column(
modifier = GlanceModifier.fillMaxSize(),
verticalAlignment = Alignment.Top,
horizontalAlignment = Alignment.CenterHorizontally
) {
Text(text = "Where to?", modifier = GlanceModifier.padding(12.dp))
Row(horizontalAlignment = Alignment.CenterHorizontally) {
Button(
text = "Home",
onClick = actionStartActivity()
)
Button(
text = "Work",
onClick = actionStartActivity()
)
}
}
}
@Preview(showBackground = true)
@Composable
fun ContentPreview() {
MyContent()
}
Подробнее здесь: https://stackoverflow.com/questions/777 ... oid-studio
Как просмотреть виджет приложения Android Glance в Android Studio? ⇐ Android
Форум для тех, кто программирует под Android
-
Anonymous
1761286641
Anonymous
Я следую документации Android Glance (https://developer.android.com/jetpack/compose/glance/create-app-widget), чтобы создать виджет. Пользовательский интерфейс виджета определен в составной функции MyContent.
Я пытаюсь просмотреть пользовательский интерфейс, добавив составной предварительный просмотр...
@Preview(showBackground = true)
@Composable
fun ContentPreview() {
MyContent()
}
Но я получаю сообщение об ошибке: «Не удалось создать экземпляр локальной композиции».
This preview was unable to find a CompositionLocal. You might need to define it so it can render correctly.
Как правильно просмотреть виджет приложения Glance?
Я могу создать и запустить виджет на своем физическом устройстве, но мне нужна возможность предварительного просмотра виджета в Android Studio, аналогично тому, как мы можем просматривать другие функции Composable.
[b]Full StackTrace:[/b]
java.lang.IllegalStateException: I n v a l i d a p p l i e r < b r / > a t a n d r o i d x . c o m p o s e . r u n t i m e . C o m p o s a b l e s K t . i n v a l i d A p p l i e r ( C o m p o s a b l e s . k t : 4 7 2 ) < b r / > a t a n d r o i d x . g l a n c e . l a y o u t . C o l u m n K t . C o l u m n - K 4 G K K T E ( C o l u m n . k t : 1 0 2 ) < b r / > a t c o m . e x a m p l e . m y p r o j e c t . M y A p p W i d g e t K t . M y C o n t e n t ( M y A p p W i d g e t . k t : 4 6 ) < b r / > a t c o m . e x a m p l e . m y p r o j e c t . M y A p p W i d g e t K t . C o n t e n t P r e v i e w ( M y A p p W i d g e t . k t : 6 9 ) < b r / > a t j a v a . b a s e / j d k . i n t e r n a l . r e f l e c t . N a t i v e M e t h o d A c c e s s o r I m p l . i n v o k e 0 ( N a t i v e M e t h o d ) < b r / > a t j a v a . b a s e / j d k . i n t e r n a l . r e f l e c t . N a t i v e M e t h o d A c c e s s o r I m p l . i n v o k e ( N a t i v e M e t h o d A c c e s s o r I m p l . j a v a : 7 7 ) < b r / > a t j a v a . b a s e / j d k . i n t e r n a l . r e f l e c t . D e l e g a t i n g M e t h o d A c c e s s o r I m p l . i n v o k e ( D e l e g a t i n g M e t h o d A c c e s s o r I m p l . j a v a : 4 3 ) < b r / > a t j a v a . b a s e / j a v a . l a n g . r e f l e c t . M e t h o d . i n v o k e ( M e t h o d . j a v a : 5 6 8 ) < b r / > a t a n d r o i d x . c o m p o s e . u i . t o o l i n g . C o m p o s a b l e I n v o k e r . i n v o k e C o m p o s a b l e M e t h o d ( C o m p o s a b l e I n v o k e r . k t : 1 6 3 ) < b r / > a t a n d r o i d x . c o m p o s e . u i . t o o l i n g . C o m p o s a b l e I n v o k e r . i n v o k e C o m p o s a b l e ( C o m p o s a b l e I n v o k e r . k t : 2 0 3 ) < b r / > a t a n d r o i d x . c o m p o s e . u i . t o o l i n g . C o m p o s e V i e w A d a p t e r $ i n i t $ 3 $ 1 $ c o m p o s a b l e $ 1 . i n v o k e ( C o m p o s e V i e w A d a p t e r . k t : 5 0 9 ) < b r / > a t a n d r o i d x . c o m p o s e . u i . t o o l i n g . C o m p o s e V i e w A d a p t e r $ i n i t $ 3 $ 1 $ c o m p o s a b l e $ 1 . i n v o k e ( C o m p o s e V i e w A d a p t e r . k t : 5 0 7 ) < b r / > a t a n d r o i d x . c o m p o s e . u i . t o o l i n g . C o m p o s e V i e w A d a p t e r $ i n i t $ 3 $ 1 . i n v o k e ( C o m p o s e V i e w A d a p t e r . k t : 5 4 4 ) < b r / > a t a n d r o i d x . c o m p o s e . u i . t o o l i n g . C o m p o s e V i e w A d a p t e r $ i n i t $ 3 $ 1 . i n v o k e ( C o m p o s e V i e w A d a p t e r . k t : 5 0 2 ) < b r / > a t a n d r o i d x . c o m p o s e . r u n t i m e . i n t e r n a l . C o m p o s a b l e L a m b d a I m p l . i n v o k e ( C o m p o s a b l e L a m b d a . j v m . k t : 1 0 8 ) < b r / > a t a n d r o i d x . c o m p o s e . r u n t i m e . i n t e r n a l . C o m p o s a b l e L a m b d a I m p l . i n v o k e ( C o m p o s a b l e L a m b d a . j v m . k t : 3 5 ) < b r / > a t a n d r o i d x . c o m p o s e . r u n t i m e . C o m p o s i t i o n L o c a l K t . C o m p o s i t i o n L o c a l P r o v i d e r ( C o m p o s i t i o n L o c a l . k t : 2 2 8 ) < b r / > a t a n d r o i d x . c o m p o s e . u i . t o o l i n g . I n s p e c t a b l e K t . I n s p e c t a b l e ( I n s p e c t a b l e . k t : 6 1 ) < b r / > a t a n d r o i d x . c o m p o s e . u i . t o o l i n g . C o m p o s e V i e w A d a p t e r $ W r a p P r e v i e w $ 1 . i n v o k e ( C o m p o s e V i e w A d a p t e r . k t : 4 4 9 ) < b r / > a t a n d r o i d x . c o m p o s e . u i . t o o l i n g . C o m p o s e V i e w A d a p t e r $ W r a p P r e v i e w $ 1 . i n v o k e ( C o m p o s e V i e w A d a p t e r . k t : 4 4 8 ) < b r / > a t a n d r o i d x . c o m p o s e . r u n t i m e . i n t e r n a l . C o m p o s a b l e L a m b d a I m p l . i n v o k e ( C o m p o s a b l e L a m b d a . j v m . k t : 1 0 8 ) < b r / > a t a n d r o i d x . c o m p o s e . r u n t i m e . i n t e r n a l . C o m p o s a b l e L a m b d a I m p l . i n v o k e ( C o m p o s a b l e L a m b d a . j v m . k t : 3 5 ) < b r / > a t a n d r o i d x . c o m p o s e . r u n t i m e . C o m p o s i t i o n L o c a l K t . C o m p o s i t i o n L o c a l P r o v i d e r ( C o m p o s i t i o n L o c a l . k t : 2 2 8 ) < b r / > a t a n d r o i d x . c o m p o s e . u i . t o o l i n g . C o m p o s e V i e w A d a p t e r . W r a p P r e v i e w ( C o m p o s e V i e w A d a p t e r . k t : 4 4 3 ) < b r / > a t a n d r o i d x . c o m p o s e . u i . t o o l i n g . C o m p o s e V i e w A d a p t e r . a c c e s s $ W r a p P r e v i e w ( C o m p o s e V i e w A d a p t e r . k t : 1 2 7 ) < b r / > a t a n d r o i d x . c o m p o s e . u i . t o o l i n g . C o m p o s e V i e w A d a p t e r $ i n i t $ 3 . i n v o k e ( C o m p o s e V i e w A d a p t e r . k t : 5 0 2 ) < b r / > a t a n d r o i d x . c o m p o s e . u i . t o o l i n g . C o m p o s e V i e w A d a p t e r $ i n i t $ 3 . i n v o k e ( C o m p o s e V i e w A d a p t e r . k t : 4 9 9 ) < b r / > a t a n d r o i d x . c o m p o s e . r u n t i m e . i n t e r n a l . C o m p o s a b l e L a m b d a I m p l . i n v o k e ( C o m p o s a b l e L a m b d a . j v m . k t : 1 0 8 ) < b r / > a t a n d r o i d x . c o m p o s e . r u n t i m e . i n t e r n a l . C o m p o s a b l e L a m b d a I m p l . i n v o k e ( C o m p o s a b l e L a m b d a . j v m . k t : 3 5 ) < b r / > a t a n d r o i d x . c o m p o s e . u i . p l a t f o r m . C o m p o s e V i e w . C o n t e n t ( C o m p o s e V i e w . a n d r o i d . k t : 4 2 8 ) < b r / > a t a n d r o i d x . c o m p o s e . u i . p l a t f o r m . A b s t r a c t C o m p o s e V i e w $ e n s u r e C o m p o s i t i o n C r e a t e d $ 1 . i n v o k e ( C o m p o s e V i e w . a n d r o i d . k t : 2 5 2 ) < b r / > a t a n d r o i d x . c o m p o s e . u i . p l a t f o r m . A b s t r a c t C o m p o s e V i e w $ e n s u r e C o m p o s i t i o n C r e a t e d $ 1 . i n v o k e ( C o m p o s e V i e w . a n d r o i d . k t : 2 5 1 ) < b r / > a t a n d r o i d x . c o m p o s e . r u n t i m e . i n t e r n a l . C o m p o s a b l e L a m b d a I m p l . i n v o k e ( C o m p o s a b l e L a m b d a . j v m . k t : 1 0 8 ) < b r / > a t a n d r o i d x . c o m p o s e . r u n t i m e . i n t e r n a l . C o m p o s a b l e L a m b d a I m p l . i n v o k e ( C o m p o s a b l e L a m b d a . j v m . k t : 3 5 ) < b r / > a t a n d r o i d x . c o m p o s e . r u n t i m e . C o m p o s i t i o n L o c a l K t . C o m p o s i t i o n L o c a l P r o v i d e r ( C o m p o s i t i o n L o c a l . k t : 2 2 8 ) < b r / > a t a n d r o i d x . c o m p o s e . u i . p l a t f o r m . C o m p o s i t i o n L o c a l s K t . P r o v i d e C o m m o n C o m p o s i t i o n L o c a l s ( C o m p o s i t i o n L o c a l s . k t : 1 9 5 ) < b r / > a t a n d r o i d x . c o m p o s e . u i . p l a t f o r m . A n d r o i d C o m p o s i t i o n L o c a l s _ a n d r o i d K t $ P r o v i d e A n d r o i d C o m p o s i t i o n L o c a l s $ 3 . i n v o k e ( A n d r o i d C o m p o s i t i o n L o c a l s . a n d r o i d . k t : 1 1 9 ) < b r / > a t a n d r o i d x . c o m p o s e . u i . p l a t f o r m . A n d r o i d C o m p o s i t i o n L o c a l s _ a n d r o i d K t $ P r o v i d e A n d r o i d C o m p o s i t i o n L o c a l s $ 3 . i n v o k e ( A n d r o i d C o m p o s i t i o n L o c a l s . a n d r o i d . k t : 1 1 8 ) < b r / > a t a n d r o i d x . c o m p o s e . r u n t i m e . i n t e r n a l . C o m p o s a b l e L a m b d a I m p l . i n v o k e ( C o m p o s a b l e L a m b d a . j v m . k t : 1 0 8 ) < b r / > a t a n d r o i d x . c o m p o s e . r u n t i m e . i n t e r n a l . C o m p o s a b l e L a m b d a I m p l . i n v o k e ( C o m p o s a b l e L a m b d a . j v m . k t : 3 5 ) < b r / > a t a n d r o i d x . c o m p o s e . r u n t i m e . C o m p o s i t i o n L o c a l K t . C o m p o s i t i o n L o c a l P r o v i d e r ( C o m p o s i t i o n L o c a l . k t : 2 2 8 ) < b r / > a t a n d r o i d x . c o m p o s e . u i . p l a t f o r m . A n d r o i d C o m p o s i t i o n L o c a l s _ a n d r o i d K t . P r o v i d e A n d r o i d C o m p o s i t i o n L o c a l s ( A n d r o i d C o m p o s i t i o n L o c a l s . a n d r o i d . k t : 1 1 0 ) < b r / > a t a n d r o i d x . c o m p o s e . u i . p l a t f o r m . W r a p p e d C o m p o s i t i o n $ s e t C o n t e n t $ 1 $ 1 $ 2 . i n v o k e ( W r a p p e r . a n d r o i d . k t : 1 5 8 ) < b r / > a t a n d r o i d x . c o m p o s e . u i . p l a t f o r m . W r a p p e d C o m p o s i t i o n $ s e t C o n t e n t $ 1 $ 1 $ 2 . i n v o k e ( W r a p p e r . a n d r o i d . k t : 1 5 7 ) < b r / > a t a n d r o i d x . c o m p o s e . r u n t i m e . i n t e r n a l . C o m p o s a b l e L a m b d a I m p l . i n v o k e ( C o m p o s a b l e L a m b d a . j v m . k t : 1 0 8 ) < b r / > a t a n d r o i d x . c o m p o s e . r u n t i m e .internal.ComposableLambdaImpl.invoke(ComposableLambda.jvm.kt:35)
at androidx.compose.runtime.CompositionLocalKt.CompositionLocalProvider(CompositionLocal.kt:228)
at androidx.compose.ui.platform.WrappedComposition$setContent$1$1.invoke(Wrapper.android.kt:157)
at androidx.compose.ui.platform.WrappedComposition$setContent$1$1.invoke(Wrapper.android.kt:142)
at androidx.compose.runtime.internal.ComposableLambdaImpl.invoke(ComposableLambda.jvm.kt:108)
at androidx.compose.runtime.internal.ComposableLambdaImpl.invoke(ComposableLambda.jvm.kt:35)
at androidx.compose.runtime.ActualJvm_jvmKt.invokeComposable(ActualJvm.jvm.kt:78)
at androidx.compose.runtime.ComposerImpl.doCompose(Composer.kt:3340)
at androidx.compose.runtime.ComposerImpl.composeContent$runtime_release(Composer.kt:3273)
at androidx.compose.runtime.CompositionImpl.composeContent(Composition.kt:588)
at androidx.compose.runtime.Recomposer.composeInitial$runtime_release(Recomposer.kt:1013)
at androidx.compose.runtime.CompositionImpl.setContent(Composition.kt:520)
at androidx.compose.ui.platform.WrappedComposition$setContent$1.invoke(Wrapper.android.kt:142)
at androidx.compose.ui.platform.WrappedComposition$setContent$1.invoke(Wrapper.android.kt:133)
at androidx.compose.ui.platform.AndroidComposeView.setOnViewTreeOwnersAvailable(AndroidComposeView.android.kt:1191)
at androidx.compose.ui.platform.WrappedComposition.setContent(Wrapper.android.kt:133)
at androidx.compose.ui.platform.WrappedComposition.onStateChanged(Wrapper.android.kt:183)
at androidx.lifecycle.LifecycleRegistry$ObserverWithState.dispatchEvent(LifecycleRegistry.kt:314)
at androidx.lifecycle.LifecycleRegistry.addObserver(LifecycleRegistry.kt:192)
at androidx.compose.ui.platform.WrappedComposition$setContent$1.invoke(Wrapper.android.kt:140)
at androidx.compose.ui.platform.WrappedComposition$setContent$1.invoke(Wrapper.android.kt:133)
at androidx.compose.ui.platform.AndroidComposeView.onAttachedToWindow(AndroidComposeView.android.kt:1266)
at android.view.View.dispatchAttachedToWindow(View.java:21291)
at android.view.ViewGroup.dispatchAttachedToWindow(ViewGroup.java:3491)
at android.view.ViewGroup.dispatchAttachedToWindow(ViewGroup.java:3498)
at android.view.ViewGroup.dispatchAttachedToWindow(ViewGroup.java:3498)
at android.view.ViewGroup.dispatchAttachedToWindow(ViewGroup.java:3498)
at android.view.ViewGroup.dispatchAttachedToWindow(ViewGroup.java:3498)
at android.view.ViewGroup.dispatchAttachedToWindow(ViewGroup.java:3498)
at android.view.AttachInfo_Accessor.setAttachInfo(AttachInfo_Accessor.java:54)
at com.android.layoutlib.bridge.impl.RenderSessionImpl.inflate(RenderSessionImpl.java:372)
at com.android.layoutlib.bridge.Bridge.createSession(Bridge.java:450)
at com.android.tools.idea.layoutlib.LayoutLibrary.createSession(LayoutLibrary.java:122)
at com.android.tools.rendering.RenderTask.createRenderSession(RenderTask.java:742)
at com.android.tools.rendering.RenderTask.lambda$inflate$7(RenderTask.java:889)
at com.android.tools.rendering.RenderExecutor$runAsyncActionWithTimeout$3.run(RenderExecutor.kt:202)
at com.android.tools.rendering.RenderExecutor$PriorityRunnable.run(RenderExecutor.kt:316)
at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1136)
at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:635)
at java.base/java.lang.Thread.run(Thread.java:833)
[b]Полный код MyAppWidget.kt[/b]
import android.content.Context
import androidx.compose.runtime.Composable
import androidx.compose.ui.tooling.preview.Preview
import androidx.compose.ui.unit.dp
import androidx.glance.GlanceId
import androidx.glance.GlanceModifier
import androidx.glance.appwidget.GlanceAppWidget
import androidx.glance.appwidget.provideContent
import androidx.glance.layout.Column
import androidx.glance.text.Text
import androidx.glance.Button
import androidx.glance.action.actionStartActivity
import androidx.glance.appwidget.action.actionStartActivity
import androidx.glance.layout.Alignment
import androidx.glance.layout.Column
import androidx.glance.layout.Row
import androidx.glance.layout.fillMaxSize
import androidx.glance.layout.padding
import androidx.glance.text.Text
/* Import Glance Composables
In the event there is a name clash with the Compose classes of the same name,
you may rename the imports per https://kotlinlang.org/docs/packages.html#imports
using the `as` keyword.
*/
class MyAppWidget : GlanceAppWidget() {
override suspend fun provideGlance(context: Context, id: GlanceId) {
// Load data needed to render the AppWidget.
// Use `withContext` to switch to another thread for long running
// operations.
provideContent {
// create your AppWidget here
MyContent()
}
}
}
@Composable
private fun MyContent() {
Column(
modifier = GlanceModifier.fillMaxSize(),
verticalAlignment = Alignment.Top,
horizontalAlignment = Alignment.CenterHorizontally
) {
Text(text = "Where to?", modifier = GlanceModifier.padding(12.dp))
Row(horizontalAlignment = Alignment.CenterHorizontally) {
Button(
text = "Home",
onClick = actionStartActivity()
)
Button(
text = "Work",
onClick = actionStartActivity()
)
}
}
}
@Preview(showBackground = true)
@Composable
fun ContentPreview() {
MyContent()
}
Подробнее здесь: [url]https://stackoverflow.com/questions/77743603/how-to-preview-an-android-glance-app-widget-in-android-studio[/url]
Ответить
1 сообщение
• Страница 1 из 1
Перейти
- Кемерово-IT
- ↳ Javascript
- ↳ C#
- ↳ JAVA
- ↳ Elasticsearch aggregation
- ↳ Python
- ↳ Php
- ↳ Android
- ↳ Html
- ↳ Jquery
- ↳ C++
- ↳ IOS
- ↳ CSS
- ↳ Excel
- ↳ Linux
- ↳ Apache
- ↳ MySql
- Детский мир
- Для души
- ↳ Музыкальные инструменты даром
- ↳ Печатная продукция даром
- Внешняя красота и здоровье
- ↳ Одежда и обувь для взрослых даром
- ↳ Товары для здоровья
- ↳ Физкультура и спорт
- Техника - даром!
- ↳ Автомобилистам
- ↳ Компьютерная техника
- ↳ Плиты: газовые и электрические
- ↳ Холодильники
- ↳ Стиральные машины
- ↳ Телевизоры
- ↳ Телефоны, смартфоны, плашеты
- ↳ Швейные машинки
- ↳ Прочая электроника и техника
- ↳ Фототехника
- Ремонт и интерьер
- ↳ Стройматериалы, инструмент
- ↳ Мебель и предметы интерьера даром
- ↳ Cантехника
- Другие темы
- ↳ Разное даром
- ↳ Давай меняться!
- ↳ Отдам\возьму за копеечку
- ↳ Работа и подработка в Кемерове
- ↳ Давай с тобой поговорим...
Мобильная версия