wake-up-neo.net

getActionView ist veraltet?

Heute entscheide ich mich, meine Android-App von Java nach Kotlin zu übersetzen! :) Aber ich war sehr überrascht, als ich Folgendes tippe:

val searchItem = menu.findItem(R.id.action_search)
val searchView = MenuItemCompat.getActionView(searchItem) as SearchView

Und Android Studio hat mir gesagt: "'getActionView (MenuItem!): View!' ist veraltet. Veraltet in Java "

Bevor ich Sie also nach der Lösung frage, frage ich Sie bei Google nach der Lösung. Ich glaube, ich finde die Lösung: "Verwenden Sie getActionView () direkt." 

Also habe ich meinen Code folgendermaßen geändert:

val searchView = MenuItemCompat.getActionView() as SearchView

Aber getActionView() ist noch gekreuzt, also verstehe ich das überhaupt nicht ...

Ich freue mich sehr, wenn Sie mir helfen können :) Vielen Dank!

22
Ross Thomas

Der Javadoc sagt:

Verwenden Sie getActionView () direkt.

Daher sollten Sie Folgendes tun:

val searchView = searchItem.getActionView() as SearchView
43
Egor

Wie von egor vorgeschlagen, können Sie dies tun

    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
Ashish Kumar

Sie können das gleiche wie auf Android Developer Website verwenden

@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
JoboFive

Verwenden Sie actionView direkt in Kotlin wie folgt:

  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)
}
0
Harry Zhang