gpt4 book ai didi

android - 如何让向上按钮返回而不是打开抽屉导航

转载 作者:行者123 更新时间:2023-12-02 13:44:30 25 4
gpt4 key购买 nike

我成功地在我的应用程序中实现了一个抽屉导航,将菜单的每个项目链接到一个 fragment 。目标 fragment 隐藏了 DrawerToggle 并显示向上按钮(即箭头图标),但无论出于何种原因,如果我单击它,它会打开抽屉并且我无法返回到前一个 fragment 。我必须按后退按钮才能做到。我怎样才能改变这种行为?是否可以在不在每个 fragment 中添加代码的情况下解决此问题?

我使用的是:

  • 导航组件
  • 一个 Activity ,一些 fragment
  • 工具栏
  • AppBarConfiguration

  • 主 Activity
    class MainActivity : AppCompatActivity() {

    override fun onCreate(savedInstanceState: Bundle?) {
    super.onCreate(savedInstanceState)
    setContentView(R.layout.activity_main)
    // Setup FTUE conditional navigation
    setupNavigation()

    setupNavigationDrawer()

    appBarConfiguration =
    AppBarConfiguration(
    setOf(R.id.overviewFragment, R.id.registrationFragment,
    R.id.registrationParamFragment), drawerLayout)
    setupActionBarWithNavController(navController, appBarConfiguration)
    findViewById<NavigationView>(R.id.nav_view)
    .setupWithNavController(navController)
    }

    /**
    * Set the toolbar, set the drawerLayout, set the drawerToggle
    */
    private fun setupNavigationDrawer() {
    toolbar = findViewById(R.id.toolbar)

    setSupportActionBar(toolbar)

    drawerLayout = (findViewById<DrawerLayout>(R.id.drawer_layout))
    .apply {
    setStatusBarBackground(R.color.colorPrimaryDark)
    }
    drawerToggle = ActionBarDrawerToggle(this, drawerLayout, toolbar, R.string.open, R.string.close)
    drawerToggle.setDrawerIndicatorEnabled(true)
    drawerToggle.syncState()

    drawerLayout.addDrawerListener(drawerToggle)

    }

    override fun onPostCreate(savedInstanceState: Bundle?, persistentState: PersistableBundle?) {
    super.onPostCreate(savedInstanceState, persistentState)
    drawerToggle.syncState()
    }

    /**
    * Ensures that the drawer is closed
    * before the app switches back to the previous fragment
    */
    override fun onBackPressed() {
    if (drawerLayout.isDrawerOpen(GravityCompat.START)) {
    drawerLayout.closeDrawer(GravityCompat.START)
    } else {
    super.onBackPressed()
    }
    }
    }

    完整存储库: Github

    最佳答案

    您需要使用导航 Controller 设置您的工具栏:

    toolbar.setupWithNavController(findNavController(R.id.nav_host_fragment),findViewById(R.id.full_drawer_layout))

    有关于此的更多信息 here .

    关于android - 如何让向上按钮返回而不是打开抽屉导航,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60030589/

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