在较新版本的 compose 中使用
LocalContext
。AmbientContext
:
@Composable
fun MainScreen() {
val context = LocalContext.current
Button(onClick = {
context.startActivity(Intent(context, ListActivity::class.java))
}) {
Text(text = "Show List")
}
}
这是我通常的做法(并将值传递给另一个活动):
val context = LocalContext.current
...
onClick = {
val intent = Intent(context, ListActivity::class.java)
intent.putExtra(YourExtraKey, YourExtraValue)
context.startActivity(intent)
}
除了使用
LocalContext.current
导航到 Composable
内的另一个 Activity 之外。
如果您能够将
onClick
回调传递给 Activity/Fragment,您仍然可以像以前一样导航。示例
class MainActivity : ComponentActivity() {
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContent {
AndroidTheme {
Surface(...) {
Greeting (onClick = {
// this here is MainActivity
startDetailActivity()
})
}
}
}
}
fun startDetailActivity() {
val intent = Intent(this, DetailActivity::class.java)
startActivity(intent)
}
}
@Composable
fun Greeting(onClick: () -> Unit) {
Button(onClick = onClick) {
Text(text = "Button")
}
}