如何使用 Fragment
将 Activity
添加到 jetpack compose
,我找不到合适的文档,这是我的活动代码看起来像
class MainActivity : ComponentActivity() {
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContent {
ComposeDemoTheme {
// A surface container using the 'background' color from the theme
Surface(color = MaterialTheme.colors.background) {
RenderTextUserFields()
}
}
}
}
}
我有一个片段名称 LoginFragment
我想在应用程序最初加载时呈现 LoginFragment
然后我想导航到另一个片段我有 DetailsFragment
答案 0 :(得分:0)
您可以使用标准的 AppCompatActivity
:
例如在 Scaffold
中,您可以使用以下内容:
findNavController().navigate(R.id.nav_profile, bundle)
scope.launch {
scaffoldState.drawerState.close()
}
与:
private fun findNavController(): NavController {
val navHostFragment =
supportFragmentManager.findFragmentById(R.id.nav_host_fragment) as NavHostFragment
return navHostFragment.navController
}
答案 1 :(得分:0)
首先,如果您将 Fragments 与 JetpackCompose 一起使用,我会建议您避免使用活动。
因此,如果我理解正确的话,您可以做的是定义您的 NavigationGraph,您可以通过将导航文件夹添加到 res 文件夹中来实现,然后创建 nav_graph.xml
(请参阅:{{3 }})。
将初始片段(在本例中为 LoginFragment)设置为起始片段(这可以在将片段添加到 nav_graph.xml 的设计中完成)。
之后,您可以在一个片段中声明您的导航控制器,例如 val navController = findNavController()
,您可以将其传递到您的组合中,并在单击或您拥有的任何内容时导航到所需的片段(必须在 {{ 1}})。
有两种方法可以做到这一点:
nav_graph.xml
navController.navigate(R.id.yourFragmentId)
中定义 LoginFragment 和 DetailsFragment 之间的操作(您可以在设计视图中将它们连接起来),然后使用 nav_graph.xml
进行导航