问题描述
我已经在android中实现了导航抽屉。
工作正常。
onBackPressed方法也已实现。
工作正常。
现在,我要在导航抽屉的“后退按钮”单击上具有相同的onBackPressed()方法的功能。 (在导航抽屉中设置了“后退”按钮。)
我将“后退箭头”按钮设置如下:
// Set back button
mFragmentManager.addOnBackStackChangedListener(FragmentManager.OnBackStackChangedListener {
if (mFragmentManager.backStackEntryCount > 0) {
supportActionBar!!.setDisplayHomeAsUpEnabled(true)
} else {
supportActionBar!!.setDisplayHomeAsUpEnabled(false)
mToggle.syncState()
}
})
现在,要单击“后退”按钮,我已经实现了以下方法:
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)
}
但是,里面没有显示这个吐司,而是打开了我的导航抽屉。
可能是什么问题?谢谢。
编辑:
下面是打开抽屉的代码,即如下所示:
mToggle = ActionBarDrawerToggle(
this,mDrawer,toolbar,R.string.navigation_drawer_open,R.string.navigation_drawer_close
)
mDrawer.addDrawerListener(mToggle)
mToggle.syncState()
在这里,只需将ActionBarDrawerToggle设置为Navigation Drawer。因此,当我单击HumberIcon时,抽屉将打开。
下面是我的Activity内的onBackPressed()方法:
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()
}
}
}
}
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)