fun createListItem(itemIndex: Int) {
Padding(left = 8.dp, right = 8.dp, top = 8.dp, bottom = 8.dp) {
FlexRow(crossAxisAlignment = CrossAxisAlignment.Center) {
expanded(1.0f) {
Text("Item $itemIndex")
}
inflexible {
Button(
"Button $itemIndex",
style = ContainedButtonStyle(),
onClick = {
Toast.makeText(
this@MainActivity,
"Item name $itemIndex",
Toast.LENGTH_SHORT
).show()
})
}
}
}
}
我尝试用普通的方法做烤面包。但是我遇到了错误,我尝试了很多倍数源,但是失败了。
答案 0 :(得分:19)
ContextAmbient
和 AmbientContext
已弃用
您可以将它们替换为
val context = LocalContext.current
答案 1 :(得分:15)
自 ContextAmbient.current
alpha-09
起已弃用。
已弃用。我认为 AmbientContext.current
alpha-11
。
LocalContext.current
是您现在如何在可组合中获取上下文。
答案 2 :(得分:9)
答案 3 :(得分:2)
您可以使用定义ambientContext
访问上下文。
示例:
val context = +ambient(ContextAmbient)
答案 4 :(得分:2)
ContextAmbient.current
已被弃用,请改用 val context = AmbientContext.current
。
答案 5 :(得分:2)
compose_version = '1.0.0-alpha12'
有问题吗? AmbientContext
现在是 LocalContext
答案 6 :(得分:1)
我认为您永远不会以正常方式显示Toast
。 Jetpack Compose使用一个自定义的Kotlin
编译器插件将这些可组合函数转换为应用程序的UI元素。例如,Text()
函数由Compose UI library
定义。 Jetpack Compose处于开发的早期阶段。您可以在下面的链接中查看包含示例和集成测试检查的Jetpack的所有仓库
https://android.googlesource.com/platform/frameworks/support/+/refs/heads/androidx-master-dev/ui
有关Jetpack组成材料演示的信息,请检查此链接
答案 7 :(得分:0)
要在jetpack中获取上下文,请执行以下操作:
val context = ContextAmbient.current
致力于0.1.0-dev14
如何在 TOAST 中使用它:
@Composable
fun cardViewImplementer(item: Int) {
val context = ContextAmbient.current
Card(
shape = RoundedCornerShape(10.dp),
modifier = Modifier.padding(10.dp)
) {
Box(
modifier = Modifier
.fillMaxWidth()
.drawShadow(5.dp)
.clickable(onClick = {
Toast.makeText(context, "Clicked $item", Toast.LENGTH_SHORT).show()
}), children = {
})
}
用于访问资源:
Text("Read this string: "+context.getString(R.string.name))
答案 8 :(得分:0)
val context = LocalContext.current
Toast.makeText(context,"Hello Compose",Toast.LENGTH_LONG).show()
答案 9 :(得分:0)
LocalContext.current - 是正确的方法。但问题是你 不能在@Composable 函数中使用 LocalContext.current
您需要创建单独的函数才能使用上下文
示例代码
@Composable
fun DoneButton(){
val context = LocalContext.current
Button(onClick = { showToast(context,"Button clicked")}) {
Text(name = "Done")
}
}
fun showToast(context: Context, msg:String){
Toast.makeText(context,msg,Toast.LENGTH_LONG).show()
}