(SearchView) MenuItemCompat.getActionView(item) 始终为空

(SearchView) MenuItemCompat.getActionView(item) always null

我是android工作室的初学者,抱歉我的英语不好。

我在 secondActivity 中有一个 searchView。
我做了如下的事情:

1.implemented gradle 中的 v7 AppCompat 支持库像这样 compile 'com.android.support:appcompat-v7:25.3.1'
2.implemented android.support.v7.widget.SearchView.OnQueryTextListener当前 activity 的接口像这样 public class ViewActivity extends AppCompatActivity implements SearchView.OnQueryTextListener

但 searchView 仍然为空。 以下是我的源代码:

Menu.xml

<?xml version="1.0" encoding="utf-8"?>
   <menu xmlns:android="http://schemas.android.com/apk/res/android"
         xmlns:app="http://schemas.android.com/apk/res-auto">
       <item
         android:id="@+id/action_search1"
         android:icon="@android:drawable/ic_menu_search"
         app:showAsAction="always"
         app:actionViewClass="android:support.v7.widget.SearchView"
         android:title="@string/search_hint" />
   </menu>  

在activity

@Override
public boolean onCreateOptionsMenu(android.view.Menu menu){
    getMenuInflater().inflate(R.menu.menu_search, menu);
    final MenuItem item = menu.findItem(R.id.action_search1);
    final SearchView searchView = (SearchView) MenuItemCompat.getActionView(item);
    searchView.setQueryHint("Search Name");
    searchView.setIconified(false);
    searchView.setOnQueryTextListener(this);
    return super.onCreateOptionsMenu(menu);
}

MenuItemCompat.getActionView(MenuItem 项)在 API 级别 26.1.0 中已弃用。

现在推荐的方法是直接在菜单项上调用 getActionView():

@Override
public boolean onCreateOptionsMenu(Menu menu) {
    getMenuInflater().inflate(R.menu.menu_search, menu);
    MenuItem searchItem = menu.findItem(R.id.action_search); 
    SearchView searchView = (SearchView) searchItem.getActionView();

    // ...
}