我在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到导航抽屉。所以,当我点击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()
}
}
}
}
2条答案
按热度按时间m1m5dgzv1#
如果您的工具栏正常,您可以使用以下命令返回带有NavComponent的工具栏。
如果您的工具栏有问题,请分享相关代码。
fcwjkofz2#
步骤1:在XML设计中,工具栏位于顶部
第二步:然后用文本绑定你的顶部工具栏
那就处理好你的
在按下后()
无论你想重定向到哪里
例如: