Jetpack Compose-常见属性的获取

前言

Context

1
val context = LocalContext.current

Activity

方式1(不推荐)

1
2
3
val context = LocalContext.current
// 将 Context 转换为 Activity(注意:需确保当前 Context 是 Activity)
val activity = context as? ComponentActivity

参数传入

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
// 父组件(Activity 内)
class MainActivity : ComponentActivity() {
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContent {
// 直接传递当前 Activity 实例
MyComposable(activity = this)
}
}
}

// 子 Composable(通过参数接收,无耦合)
@Composable
fun MyComposable(activity: Activity) {
Button(onClick = {
// 安全使用 Activity,比如启动新页面
val intent = Intent(activity, SecondActivity::class.java)
activity.startActivity(intent)
}) {
Text("启动页面")
}
}

LifecycleOwner

1
val lifecycleOwner = androidx.lifecycle.compose.LocalLifecycleOwner.current