Kotlin-处理后退按钮在导航抽屉中单击-Android [英] Kotlin - Handling Back Button Click in Navigation Drawer - Android
问题描述
我已经在android中实现了导航抽屉.
I have implemented Navigation Drawer in android.
工作正常.
onBackPressed方法也已实现.
onBackPressed method is also implemented.
工作正常.
现在,我要在导航抽屉的后退按钮"单击上具有相同的onBackPressed()方法的功能. (在导航抽屉中设置了后退"按钮.)
Now, I want same onBackPressed() method's functionality on Back Button click of Navigation Drawer. (Back Button is set in Navigation Drawer.)
我将后退箭头"按钮设置如下:
I have set Back Arrow button as below :
// Set back button
mFragmentManager.addOnBackStackChangedListener(FragmentManager.OnBackStackChangedListener {
if (mFragmentManager.backStackEntryCount > 0) {
supportActionBar!!.setDisplayHomeAsUpEnabled(true)
} else {
supportActionBar!!.setDisplayHomeAsUpEnabled(false)
mToggle.syncState()
}
})
现在,要单击后退"按钮,我已经实现了以下方法:
Now, to take the click of Back button I have implemented below method :
override fun onOptionsItemSelected(item: MenuItem): Boolean {
when (item.itemId) {
android.R.id.home-> {
Toast.makeText(this, "Back pressed", Toast.LENGTH_SHORT)
.show();
onBackPressed();
}
}
return super.onOptionsItemSelected(item)
}
但是,里面没有显示这个吐司,而是打开了我的导航抽屉.
But, this toast inside is not displaying, instead it just opening my Navigation Drawer.
可能是什么问题?谢谢.
What might be the issue ? Thanks.
下面是打开抽屉的代码,即如下所示:
Below is the code to open Drawer i.e. as below :
mToggle = ActionBarDrawerToggle(
this,
mDrawer,
toolbar,
R.string.navigation_drawer_open,
R.string.navigation_drawer_close
)
mDrawer.addDrawerListener(mToggle)
mToggle.syncState()
在这里,只需将ActionBarDrawerToggle设置为Navigation Drawer.因此,当我单击HumberIcon时,抽屉将打开.
Here, just set a ActionBarDrawerToggle to Navigation Drawer. So, Drawer open when I click on HumberIcon.
下面是我的Activity内的onBackPressed()方法:
Below is the onBackPressed() method inside my Activity :
if (mDrawer.isDrawerOpen(GravityCompat.START)) {
mDrawer.closeDrawer(GravityCompat.START)
} else {
if (mFragmentManager.backStackEntryCount > 0) {
mFragmentManager.popBackStack()
nav_view.setCheckedItem(R.id.nav_home_fragment)
} else {
if (mFragmentManager.findFragmentById(R.id.fragment_container) is SecondFragment) {
mFragmentManager.popBackStack()
nav_view.setCheckedItem(R.id.nav_home_fragment)
} else {
super.onBackPressed()
}
}
}
}
推荐答案
如果您的工具栏没有问题,则可以使用以下内容返回带有NavComponent的内容.
If your toolbar is OK, you can use the following to go back one with NavComponent.
findNavController().popBackStack()
如果工具栏有问题,请共享相关代码.
If there is a problem with your toolbar, please share the relevant codes.
这篇关于Kotlin-处理后退按钮在导航抽屉中单击-Android的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!