GetActionView устарел?

Сегодня я решил перевести свое приложение для 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() по-прежнему пересекается, поэтому я совсем не понимаю...

Я буду очень рад, если вы сможете мне помочь:) Спасибо!

Ответ 1

Джавадок говорит:

Используйте getActionView() напрямую.

Следовательно, вам следует сделать следующее:

val searchView = searchItem.getActionView() as SearchView

Ответ 2

Вы можете использовать то же самое, что и на веб-разработчик 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;
}

Ответ 3

Как было предложено 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;

Ответ 4

Используйте 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)
}