无法使用 SearchView 提交查询

Cannot submit query with SearchView

我使用以下代码片段在 HomeActivity 中为我的工具栏启用搜索功能。当我输入查询时,应用程序应将我带到 NearbySearchActivity,我将在其中看到结果。

我可以看到工具栏,单击图标并在出现的 SearchView 中键入查询。然而,当我点击我的软件键盘上的放大镜时,它消失了,什么也没有发生。

主页活动:

public class HomeActivity extends AppCompatActivity implements
        NavigationView.OnNavigationItemSelectedListener {

    @Override
    public boolean onCreateOptionsMenu(Menu menu) {
        getMenuInflater().inflate(R.menu.menu_home, menu);

        SearchManager searchManager = (SearchManager) getSystemService(Context.SEARCH_SERVICE);
        SearchView searchView = (SearchView) menu.findItem(R.id.search).getActionView();
        searchView.setSearchableInfo(searchManager.getSearchableInfo(getComponentName()));

        return true;
    }
}

Xml HomeActivity导航图标文件:

<menu
    xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto">
    <item
        android:id="@+id/search"
        android:title="Search"
        android:icon="@drawable/ic_search"
        app:showAsAction="collapseActionView|ifRoom"
        app:actionViewClass="android.support.v7.widget.SearchView" />
</menu>

AndroidManifest:

<activity android:name=".NearbySearchActivity">
    <intent-filter>
        <action android:name="android.intent.action.SEARCH" />
    </intent-filter>
    <meta-data
        android:name="android.app.searchable"
        android:resource="@xml/searchable" />
</activity>
<activity
    android:name=".HomeActivity"
    android:label="@string/home_title"
    android:theme="@style/AppTheme.NoActionBar" >
    <meta-data android:name="android.app.default_searchable"
        android:value=".NearbySearchActivity" />
</activity>

可搜索xml:

<?xml version="1.0" encoding="utf-8"?>
<searchable
    xmlns:android="http://schemas.android.com/apk/res/android"
    android:label="search"/>

NearbySearchActivity:

public class NearbySearchActivity extends AppCompatActivity {

    private String query = "";

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_nearby_search);

        handleIntent(getIntent());
    }

    @Override
    protected void onNewIntent(Intent intent) {
        handleIntent(intent);
    }

    private void handleIntent(Intent intent) {
        if (Intent.ACTION_SEARCH.equals(intent.getAction())) {
            query = intent.getStringExtra(SearchManager.QUERY);
        }
    }
}

如何提交我输入的查询并转到 NearbySearchActivity?

您是否为 SearchView 设置了 OnQueryTextListener?此侦听器侦听正在更改或提交的查询。

searchView.setOnQueryTextListener(new SearchView.OnQueryTextListener() {
    @Override
    public boolean onQueryTextSubmitted(String query) { 
        // Called when the user submits the query.
        return true;
    }

    @Override
    public boolean onQueryTextChange(String newText) { 
        // Called when the query text is changed by the user.
        return true;
    }
}