繁体   English   中英

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

[英]How to navigate from a composable to an activity or a fragment in Jetpack Compose?

在可组合和活动之间进行导航的方式是什么,反之亦然? 我可以使用 StartActivity(..) 方法还是唯一的方法是创建 Screens 和 NavController?

在此处输入图像描述

在 compose 1.0.0-alpha08中,使用AmbientContext ,在早期版本的 compose 中使用LocalContext

@Composeable
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")
    }
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM