gpt4 book ai didi

android - 如何在 Android Jetpack Navigation 中制作动态起始目的地

转载 作者:行者123 更新时间:2023-12-04 23:38:24 31 4
gpt4 key购买 nike

我正在构建一个 SMS 应用程序,使用 NavigationAndroid Jetpack 打包在屏幕之间导航。
当用户第一次打开我的应用程序时,他们会进入一个权限屏幕,他们需要在其中获得默认应用程序权限和一些常规权限,然后才能进入主屏幕。
当用户更改他们的默认 SMS 应用程序然后重新打开我的应用程序时,我还需要显示权限屏幕。
我看到了Conditional Navigation Android 导航文档中的部分。它建议将此逻辑放在主屏幕 fragment 中 onViewCreated方法。但我担心它会影响我的应用程序的启动时间。
有没有更有效的方法来实现这一点?理想情况下,我想在 Activity 中处理这个逻辑。

最佳答案

不要在 XML 文件中设置导航图。

<?xml version="1.0" encoding="utf-8"?>
<androidx.fragment.app.FragmentContainerView
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
android:id="@+id/navigationHostFragmentMain"
android:name="androidx.navigation.fragment.NavHostFragment"
android:layout_width="match_parent"
android:layout_height="match_parent"
app:defaultNavHost="true" />
在您的 Activity您可以以编程方式设置起始目的地,然后设置导航图。
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)

setNavigationGraph()
}

private fun setNavigationGraph() {
val navHostFragment =
supportFragmentManager.findFragmentById(R.id.navigationHostFragmentMain) as NavHostFragment
val navController = navHostFragment.navController

val navGraph = navController.navInflater.inflate(R.navigation.navigation_graph)
navGraph.startDestination =
if (viewModel.isLoggedIn) {
R.id.homeFragment
} else {
R.id.loginFragment
}

navController.graph = navGraph
}

关于android - 如何在 Android Jetpack Navigation 中制作动态起始目的地,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/64991439/

31 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com