如何在 Jetpack Compose 中从可组合项导航到活动?

问题描述 投票:0回答:3

可以通过哪些方式在可组合项和活动之间进行导航,反之亦然? 我可以使用

startActivity(...)
方法来做到这一点,还是创建屏幕和导航控制器的唯一方法?

android android-jetpack android-jetpack-navigation android-jetpack-compose
3个回答
81
投票

在较新版本的 compose 中使用

LocalContext

在旧版本(1.0.0-alpha08及之前)中使用
AmbientContext

@Composable
fun MainScreen() {
    val context = LocalContext.current

    Button(onClick = {
        context.startActivity(Intent(context, ListActivity::class.java))
    }) {
        Text(text = "Show List")
    }
}

9
投票

这是我通常的做法(并将值传递给另一个活动):

val context = LocalContext.current
...
onClick = {
    val intent = Intent(context, ListActivity::class.java)
    intent.putExtra(YourExtraKey, YourExtraValue)
    context.startActivity(intent)
}

3
投票

除了使用

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")
    }
}
© www.soinside.com 2019 - 2024. All rights reserved.