如何使用 Jetpack Compose 将片段添加到活动中

时间:2021-06-15 05:00:35

标签: android android-jetpack android-jetpack-compose

如何使用 FragmentActivity 添加到 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

2 个答案:

答案 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}})。 有两种方法可以做到这一点:

  1. 您只需拨打 nav_graph.xml
  2. 或者您可以在 navController.navigate(R.id.yourFragmentId) 中定义 LoginFragment 和 DetailsFragment 之间的操作(您可以在设计视图中将它们连接起来),然后使用 nav_graph.xml 进行导航