我使用以下代码片段启用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;
    }
}

HomeActivity导航图标的XML文件:
<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"/>

近听活动:
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;
    }
}

07-28 02:22
查看更多