Ответ 1
Джавадок говорит:
Используйте getActionView() напрямую.
Следовательно, вам следует сделать следующее:
val searchView = searchItem.getActionView() as SearchView
Сегодня я решил перевести свое приложение для Android с Java на Kotlin!:) Но я был очень удивлен, когда набираю это:
val searchItem = menu.findItem(R.id.action_search)
val searchView = MenuItemCompat.getActionView(searchItem) as SearchView
И Android Studio рассказала мне: "getActionView (MenuItem!): View!" устарел. Устаревший в Java "
Поэтому прежде, чем спросить у вас решение, я прошу Google, в чем заключается решение, и я решил найти решение: "Используйте getActionView() напрямую".
Итак, я изменил свой код следующим образом:
val searchView = MenuItemCompat.getActionView() as SearchView
Но getActionView()
по-прежнему пересекается, поэтому я совсем не понимаю...
Я буду очень рад, если вы сможете мне помочь:) Спасибо!
Джавадок говорит:
Используйте getActionView() напрямую.
Следовательно, вам следует сделать следующее:
val searchView = searchItem.getActionView() as SearchView
Вы можете использовать то же самое, что и на веб-разработчик Android
@Override
public boolean onCreateOptionsMenu(Menu menu) {
// Inflate the options menu from XML
MenuInflater inflater = getMenuInflater();
inflater.inflate(R.menu.options_menu, menu);
// Get the SearchView and set the searchable configuration
SearchManager searchManager = (SearchManager) getSystemService(Context.SEARCH_SERVICE);
SearchView searchView = (SearchView) menu.findItem(R.id.menu_search).getActionView();
// Assumes current activity is the searchable activity
searchView.setSearchableInfo(searchManager.getSearchableInfo(getComponentName()));
searchView.setIconifiedByDefault(false); // Do not iconify the widget; expand it by default
return true;
}
Как было предложено egor, вы можете сделать это следующим образом:
getMenuInflater().inflate(R.menu.menu_items, menu);
MenuItem menuItem = menu.findItem(R.id.action_search);
SearchView searchView = (SearchView) menuItem.getActionView();
search(searchView);
return true;
Используйте actionView
непосредственно в Kotlin, например:
override fun onCreateOptionsMenu(menu: Menu?): Boolean {
menuInflater.inflate(R.menu.actions, menu)
val searchItem = menu?.findItem(R.id.action_search)
val searchView = searchItem?.actionView as SearchView
searchView.animate()
// TODO: Configure the search info and add any event listeners...
return super.onCreateOptionsMenu(menu)
}