Toolbar - Switching from drawer to back button with only one Activity

后端 未结 6 1571
予麋鹿
予麋鹿 2020-12-23 16:34

I\'ve been searching for a while on how to change between the drawer open/close icon (going from a hamburger to the arrow) to a simple back arrow. My application at the mome

6条回答
  •  無奈伤痛
    2020-12-23 16:57

    //This if block makes the menu back button to respond to clicks
        //The onOptionsItemSelected fun for whatever reason was not capturing back menu clicks
        if (toolbar != null) {
           /* toggle = ActionBarDrawerToggle(
                    this, drawer_layout, toolbar, R.string.navigation_drawer_open, R.string.navigation_drawer_close)
            toggle.syncState()
            drawer_layout.setDrawerListener(toggle)*/
            supportFragmentManager.addOnBackStackChangedListener(object : FragmentManager.OnBackStackChangedListener {
                override fun onBackStackChanged() {
                    if (supportFragmentManager.backStackEntryCount > 0) {
                        supportActionBar?.setDisplayHomeAsUpEnabled(true) // show back button
                        toolbar.setNavigationOnClickListener(object : View.OnClickListener {
                            override fun onClick(v: View) {
                                onBackPressed()
                            }
                        })
                    } else {
                        //show hamburger
                        supportActionBar?.setDisplayHomeAsUpEnabled(false)
                        toggle.syncState()
                        toolbar.setNavigationOnClickListener(object : View.OnClickListener {
                            override fun onClick(v: View) {
                                drawer_layout.openDrawer(GravityCompat.START)
                            }
                        })
                    }
                }
            })
    
        }
    

    You need to comment out "toggle = ActionBarDrawerToggle( this, drawer_layout, toolbar, R.string.navigation_drawer_open, R.string.navigation_drawer_close) toggle.syncState() drawer_layout.setDrawerListener(toggle)" (4-7 lines) if you are using the auto generated Navigation layout in Android Studio, else the behavior of the back menu button will be erratic. That is what i did and it worked perfectly for me. Hope this helps someone

提交回复
热议问题