我正在使用名为HomeActivity的新的空JC活动测试Jetpack Compose。我正在尝试将可绘制资源加载到我的代码中。这是我的功能:
@Composable
fun home() {
MaterialTheme(
colors = colors,
typography = typography
) {
val menuIcon = +imageResource(R.drawable.ic_baseline_menu_24)
val bottomActions = listOf<Image>()
var (drawerState, onDrawerStateChangeListener) = +state { DrawerState.Closed }
BottomDrawerLayout(drawerState = drawerState, onStateChange = onDrawerStateChangeListener, drawerContent = {
Text(text = "Drawer")
}) {
Column(
crossAxisSize = LayoutSize.Expand
) {
BottomAppBar(
navigationIcon = {
drawerState = DrawerState.Opened
AppBarIcon(icon = menuIcon, onClick = {})
},
actionData = bottomActions,
action = {
AppBarIcon(icon = it, onClick = {})
}
)
}
}
}
}
根据JC网站,+imageResource(R.drawable.xyz)
应该将资源作为andX.ui Image
对象加载imageResource
函数返回Effect<Image>
,它不会使应用程序崩溃,但我不知道如何将其解析为AppBarIcon
]所需的图像对象
某些Logcat输出:
java.lang.RuntimeException: Unable to start activity ComponentInfo{com.craftmyspace/com.craftmyspace.activities.HomeActivity}: java.lang.IllegalArgumentException: Parameter specified as non-null is null: method kotlin.jvm.internal.Intrinsics.checkParameterIsNotNull, parameter bitmap at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2913) at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:3048) ...os.ZygoteInit.main(ZygoteInit.java:858) Caused by: java.lang.IllegalArgumentException: Parameter specified as non-null is null: method kotlin.jvm.internal.Intrinsics.checkParameterIsNotNull, parameter bitmap at androidx.ui.graphics.AndroidImage.<init>(Unknown Source:2) at androidx.ui.graphics.AndroidImageKt.imageFromResource(AndroidImage.kt:29) at androidx.ui.res.ImageResourcesKt$imageResource$1$1.invoke(ImageResources.kt:45) at androidx.ui.res.ImageResourcesKt$imageResource$1$1.invoke(Unknown Source:0) at androidx.compose.ComposerKt.remember(Composer.kt:1867) at androidx.compose.EffectsKt$memo$2.invoke(Effects.kt:287) at androidx.compose.EffectsKt$memo$2.invoke(Unknown Source:2) at androidx.compose.Effect.resolve(Effects.kt:106) at androidx.compose.Effect.resolve$default(Effects.kt:843) at androidx.compose.Effect.unaryPlus(Effects.kt:115) at androidx.ui.res.ImageResourcesKt$imageResource$1.invoke(ImageResources.kt:45) at androidx.ui.res.ImageResourcesKt$imageResource$1.invoke(Unknown Source:2) at androidx.compose.Effect.resolve(Effects.kt:106) at androidx.compose.Effect.resolve$default(Effects.kt:843) at androidx.compose.EffectsKt.unaryPlus(Effects.kt:841) at com.craftmyspace.activities.HomeActivityKt$home$1$1$1.invoke(HomeActivity.kt:66)
HomeActivity.kt:66是这个
val menuIcon = +imageResource(R.drawable.ic_baseline_menu_24)
我正在使用名为HomeActivity的新的空JC活动测试Jetpack Compose。我正在尝试将可绘制资源加载到我的代码中。这是我的功能:@Composable fun home(){...
就我而言,我解决了从ic_chat_bubble.xml(anydpi)
ic_chat_bubble
我也遇到了同样的问题,并观察到imageFromResource()
和imageResource()
无法加载矢量资源。您需要通过提供资源ID来创建effectOf<VectorAsset>
,并使用DrawVector()
绘制矢量资产。您可以使用下面的@Composable
函数绘制矢量资源。