后退导航问题(导航图)问题 (android)

Back Navigation Issue (Nav Graph) Issue (android)

提问人:Jadu 提问时间:5/28/2023 最后编辑:Jadu 更新时间:6/11/2023 访问量:34

问:


我被困在这个后退导航按钮的问题中很长时间了,我尝试了不同的方法,但问题仍然没有解决

这是图像

enter image description here


这是我的问题
  • 因此,我有一个主屏幕,我正在其中注册并登录用户
  • 如果用户已经登录,我已将导航图设置为转到仪表板
  • 现在,当人员被重定向时,主屏幕将显示后退按钮
  • 我尝试了导航控制器,尝试更改起始目标 ID,但仍然一无所获 工作

以下是一些代码

在 SelectLanguageFragment 中定义

 private fun checkUserExist(){
    val currentUser = auth.currentUser
    val navOptions: NavOptions = NavOptions.Builder()
        .setPopUpTo(`in`.jadu.anjuconsumerapp.R.id.consumerHomeFragment, true)
        .build()
    if(currentUser != null){
        findNavController().navigate(`in`.jadu.anjuconsumerapp.R.id.action_selectLanguageFragment_to_consumerHomeFragment)
    }
}

尝试了navOptions,但没有工作

这是我的NavGraph NavGraph


NavGraph代码

app:startDestination="@id/selectLanguageFragment"

 <fragment
    android:id="@+id/selectLanguageFragment"
    android:name="in.jadu.anjuconsumerapp.consumer.commonuis.SelectLanguageFragment"
    android:label="Select Language" >
    <action
        android:id="@+id/action_selectLanguageFragment_to_phoneVerificationFragment"
        app:destination="@id/phoneVerificationFragment" />
    <action
        android:id="@+id/action_selectLanguageFragment_to_consumerHomeFragment"
        app:destination="@id/consumerHomeFragment"
        app:popUpTo="@id/selectLanguageFragment"
        app:popUpToInclusive="true" />
</fragment>

我已经尝试过了,但我不需要这个,我只想从导航中删除它,getSupportActionBar().setDisplayHomeAsUpEnabled(false)

我想在用户登录时从主屏幕中删除此后退按钮

谢谢

Android XML android-actionbar 导航图

评论


答:

0赞 Jadu 6/11/2023 #1

所以在挣扎了很多之后,看了很多yt视频,github我终于从androidx文档 参考中得到了解决方案

因此,当我们设置导航时......

  1. 只有不会有后退箭头Top Level Ids
  2. 因此,我们需要将仪表板片段定义为顶级或开始 ID(languagefragment 只是之前的开始)

法典

val navHostFragment = supportFragmentManager.findFragmentById(R.id.nav_host_fragment) as NavHostFragment
        navController = navHostFragment.navController
        val appBarConfiguration = AppBarConfiguration(
            topLevelDestinationIds = setOf(R.id.selectLanguage,R.id.farmerDashboard),
            fallbackOnNavigateUpListener = ::onSupportNavigateUp
        )
        setupActionBarWithNavController(navController,appBarConfiguration)

在这里,我已经将两个片段(selectLanguage,farmerDashboard)声明为顶级,这样我就不会在这些ID上获得后退按钮,其余的应用程序工作正常...

所以,这是一件简单的事情

希望这对您有所帮助:)