如何通过activity的函数来组合

ccd*_*ccd 7 android android-jetpack-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
) {
    ...
}
Run Code Online (Sandbox Code Playgroud)

Ily*_*a E 13

您可以将其作为方法引用传递

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")
}
Run Code Online (Sandbox Code Playgroud)

在您的示例中,方法名称本身不是函数。请参阅https://kotlinlang.org/docs/reference/lambdas.html#instantiating-a-function-type