如何将activity的函数传给compose
How to pass activity's function to compose
有没有办法将 activity 的带参数的函数传递给 compose 函数?
class MainActivity : AppCompatActivity() {
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContent {
MyTheme {
Main(
activityFunWithParam = activityFunWithParam // not work
)
}
}
}
fun activityFunWithParam(param: Param) {
...
}
}
@Composable
fun Main(
activityFunWithPara: (Param) -> Unit
) {
...
}
您可以将其作为方法参考传递
class MainActivity : AppCompatActivity() {
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContent {
Main(activityFunWithParam = ::activityFunWithParam)
}
}
fun activityFunWithParam(param: Int) {
Toast.makeText(this, param.toString(), Toast.LENGTH_SHORT).show()
}
}
@Composable
fun Main(
activityFunWithParam: (Int) -> Unit
) {
activityFunWithParam(5)
Text(text = "Test")
}
在你的例子中,方法名本身不是一个函数。参见 https://kotlinlang.org/docs/reference/lambdas.html#instantiating-a-function-type
有没有办法将 activity 的带参数的函数传递给 compose 函数?
class MainActivity : AppCompatActivity() {
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContent {
MyTheme {
Main(
activityFunWithParam = activityFunWithParam // not work
)
}
}
}
fun activityFunWithParam(param: Param) {
...
}
}
@Composable
fun Main(
activityFunWithPara: (Param) -> Unit
) {
...
}
您可以将其作为方法参考传递
class MainActivity : AppCompatActivity() {
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContent {
Main(activityFunWithParam = ::activityFunWithParam)
}
}
fun activityFunWithParam(param: Int) {
Toast.makeText(this, param.toString(), Toast.LENGTH_SHORT).show()
}
}
@Composable
fun Main(
activityFunWithParam: (Int) -> Unit
) {
activityFunWithParam(5)
Text(text = "Test")
}
在你的例子中,方法名本身不是一个函数。参见 https://kotlinlang.org/docs/reference/lambdas.html#instantiating-a-function-type