setContent 块是可组合的吗?

Fan*_*dez 4 android android-jetpack-compose composable

我正在自学 Android Jetpack Compose,并试图了解有关可组合函数调用的一些内容。

Android 官方文档指出“只能从其他可组合函数的范围内调用可组合函数”

我有这段代码在块Greeting内调用可组合 fxn setContent

class MainActivity : ComponentActivity() {
    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        setContent {
//calling Greeting() inside the setContent() block
           Greeting("Me")
        }
    }
}

//Composable function
@Composable
fun Greeting(name: String) {

    Text(text = "Hello $name!", modifier = Modifier.padding(16.dp))

}
Run Code Online (Sandbox Code Playgroud)

既然我们在其中调用了一个 Composable 函数,那么这是否会使setContent 块成为一个 Composable呢?

请大家发表一下自己的想法和意见,谢谢大家。

Gab*_*tti 8

在您的 中Activity,要创建基于 Compose 的屏幕,您必须调用该setContent()方法,并传递您喜欢的任何可组合函数。

您可以查看源代码:

public fun ComponentActivity.setContent(
    parent: CompositionContext? = null,
    content: @Composable () -> Unit
)
Run Code Online (Sandbox Code Playgroud)

其中content@Composable声明 UI 内容的函数。