Aujourd'hui, je décide de traduire mon application Android de Java à Kotlin! :) Mais j'ai été très surpris quand je tape ceci:
val searchItem = menu.findItem(R.id.action_search)
val searchView = MenuItemCompat.getActionView(searchItem) as SearchView
Et Android Studio m'a dit: "'getActionView (MenuItem!): View!' est obsolète. Déconseillé en Java "
Alors avant de vous demander la solution, je demande à Google quelle est la solution et je pense avoir trouvé la solution: "Utilisez directement getActionView ()".
J'ai donc modifié mon code comme ceci:
val searchView = MenuItemCompat.getActionView() as SearchView
Mais getActionView()
est toujours barré alors je ne comprends pas du tout ...
Je serai très heureux si vous pouvez m'aider :) Merci!
La Javadoc dit:
Utilisez directement getActionView ().
Par conséquent, ce que vous devriez faire est:
val searchView = searchItem.getActionView() as SearchView
Comme suggéré par egor, vous pouvez faire comme ceci
getMenuInflater().inflate(R.menu.menu_items, menu);
MenuItem menuItem = menu.findItem(R.id.action_search);
SearchView searchView = (SearchView) menuItem.getActionView();
search(searchView);
return true;
Vous pouvez utiliser les mêmes fonctions que celles fournies sur développeur Android site Web.
@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;
}
Utilisez actionView
directement dans Kotlin, comme ceci:
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)
}