我正在开发一个具有底部导航菜单,导航抽屉和工具栏中的搜索功能的应用程序。我现在只有一件事正在工作-我遇到的问题是,当我单击工具栏上的“搜索图标”时,抽屉也在打开!我真的不明白为什么!我确定这是我看不到的简单事物,但是。 。
无论如何,有人可以帮忙吗!
NavigationActivity.kt
{% set user ['/user', user/detail/id']
<a {% if request.path in user %}class="active" {% else %} href="{{url_for('user.index')}}" {% endif %}>
navigation_drawer_menu.xml
int n = 8; // In the video n = 8
int p = 0;
for (int i = 1; i < n; i *= 2) { // In the video i = 1
p++;
}
for (int j = 1; j < p; j *= 2) { // In the video j = 1
//code;
}
search_memu.xml
class NavigationActivity : AppCompatActivity(), NavigationView.OnNavigationItemSelectedListener{
lateinit var drawerLayout: DrawerLayout
private lateinit var appBarConfiguration: AppBarConfiguration
lateinit var navController: NavController
lateinit var navView: BottomNavigationView
lateinit var myNavView: NavigationView
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_navigation)
drawerLayout = findViewById(R.id.drawer_layout)
navView = findViewById(R.id.nav_view)
myNavView = findViewById(R.id.navigation_view) as NavigationView
myNavView.setNavigationItemSelectedListener(this)
navController = findNavController(R.id.nav_host_fragment)
setupBottomNavigation()
appBarConfiguration = AppBarConfiguration(setOf(
R.id.navigation_map, R.id.navigation_list, R.id.navigation_workmates), drawerLayout)
setupActionBarWithNavController(navController, appBarConfiguration)
}
override fun onSupportNavigateUp(): Boolean {
return NavigationUI.navigateUp(navController,appBarConfiguration)
}
private fun setupBottomNavigation() {
navView.setupWithNavController(navController)
}
override fun onCreateOptionsMenu(menu: Menu?): Boolean {
menuInflater.inflate(R.menu.search_menu, menu)
val myActionMenuItem = menu!!.findItem(R.id.search)
var searchView = myActionMenuItem.actionView as SearchView
searchView.setOnQueryTextListener(object : SearchView.OnQueryTextListener {
override fun onQueryTextSubmit(query: String): Boolean {
toast(query)
myActionMenuItem.collapseActionView()
return false
}
override fun onQueryTextChange(s: String): Boolean {
drawerLayout.closeDrawer(GravityCompat.START)
return false
}
})
return true
}
override fun onOptionsItemSelected(item: MenuItem?): Boolean {
val check = drawerLayout.isDrawerOpen(GravityCompat.START)
if (!check) {
drawerLayout.openDrawer(GravityCompat.START)
} else {
drawerLayout.closeDrawer(GravityCompat.START)
}
return true
}
override fun onNavigationItemSelected(item: MenuItem): Boolean {
var selectedOption = ""
when (item?.itemId) {
R.id.yourlunch -> selectedOption = "yourLunch"
R.id.settings -> selectedOption = "settings"
R.id.logout -> selectedOption = "logout"
}
when(selectedOption){
"yourLunch" ->{
toast("Your Lunch Selected")
}
"settings"->{
toast("Settings Selected")
}
"logout" ->{
toast("Logout Selected")
}
}
return super.onOptionsItemSelected(item)
}
}
在此先感谢您的帮助!
答案 0 :(得分:0)
在onOptionsItemSelected方法上,您定义了单击任务栏中的选项时,它应该打开抽屉菜单。尝试将其删除。 如果要定义任务栏上要处理的项目,请在onOptionsItemSelected中使用以下用户代码:
when(item.getId()){
R.id.item1 -> ////
R.id.item2 -> ////
}
使用您提供给菜单项的ID。
答案 1 :(得分:0)
问题是您的onOptionsItemSelected()
没有呼叫super.onOptionsItemSelected()
- 是自动为android.R.id.home
按钮分派呼叫并与{ {1}}通话。
鉴于onSupportNavigateUp()
正在为您处理向上按钮,您可以删除整个onSupportNavigateUp()
实施。