Когда я впервые надуваю меню с помощью SearchView
, я сохраняю ссылки MenuItem
и SearchView
для программного вызова expandactionView()
, а также для установки OnQueryTextListener
.Когда фрагмент с этим SearchView
попадает в backstack и дает, и другой фрагмент с его собственным меню становится видимым, и некоторое время назад возвращается к фрагменту с этим SearchView
, конечно, вызывается onCreateOptionsMenu
.Но здесь есть проблема: сохраняется старый SearchView
.Вот код onCreateOptionsMenu
фрагмента "поиска":
override fun onCreateOptionsMenu(menu: Menu?, inflater: MenuInflater?) {
menu?.clear()
inflater!!.inflate(R.menu.menu_scenarios, menu)
val menuItem: MenuItem = menu!!.findItem(R.id.action_search)
val searchView: SearchView = menuItem.actionView!! as SearchView
view.withSearchView(menuItem, searchView)
addOnQueryListener(searchView)
setSignalingExpandListener()
}
Когда я вызываю expandActionView()
программно, это другой, новый MenuItemImpl
расширяется, и старый, который почему-то получаетсохраняется, не раскрывается на экране.Впоследствии, когда я затем нажимаю на значок поиска, запрос получает старый (MenuItem
) (был проверен отладчиком).Как решить эту проблему?Мне нужен один SearchView
, будь то старый или новый (не имеет значения).
PS: view - это просто мой "прокси" объект для видимых элементов на экране.Внутренне withSearchView
работает так:
fun withSearchView(menuItem: MenuItem, searchView: SearchView) {
this.menuItem = menuItem
this.searchView = searchView
}