java - Android 搜索 View 不调用搜索 Activity

标签 java android xml searchview searchactivity

Please dont mark as duplicate as I have viewed several other same question and those solution didnt worked for me.

category_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/category.search"
        android:title="Search"
        app:showAsAction="ifRoom|collapseActionView"
        app:actionViewClass="android.support.v7.widget.SearchView"/>
</menu>

Mainfest.xml

<activity android:name=".CategoryActivity">
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />
                <category android:name="android.intent.category.LAUNCHER" />
                <meta-data android:name="android.app.default_searchable" android:value=".SearchResultsActivity" />
            </intent-filter>
        </activity>
        <activity
            android:name=".SearchResultsActivity"
            android:label="@string/title_activity_search_results"
            android:theme="@style/AppTheme.NoActionBar"
            android:launchMode="singleTop">
            <intent-filter>
                <action android:name="android.intent.action.SEARCH" />
                <category android:name="android.intent.category.DEFAULT" />
            </intent-filter>
            <meta-data                android:name="android.app.searchable"                android:resource="@xml/searchable" />
            <meta-data                android:name="android.support.PARENT_ACTIVITY"                android:value=".CategoryActivity" />
        </activity>

CategoryActivity.java

@Override
public boolean onCreateOptionsMenu(Menu menu) {
        getMenuInflater().inflate(R.menu.category_menu, menu);
        SearchView searchView = (SearchView) menu.findItem(R.id.category_search).getActionView();
        SearchManager searchManager = (SearchManager) getSystemService(Context.SEARCH_SERVICE);
        searchView.setSearchableInfo(searchManager.getSearchableInfo(new ComponentName(this, SearchResultsActivity.class)));
        return true;
}

SearchResultsActivity.java

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    Log.d(TAG,"Search Began");
    setContentView(R.layout.search_results_activity);
    handleIntent(getIntent());
}

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

private void handleIntent(Intent intent) {
    Log.d(TAG, "Herer");
    if (Intent.ACTION_SEARCH.equals(intent.getAction())) {
        String query = intent.getStringExtra(SearchManager.QUERY);
        //use the query to search your data somehow
        Log.d(TAG, query);
    }
}

res/xml/下的Searchable.xml

<?xml version="1.0" encoding="utf-8"?>

<searchable xmlns:android="http://schemas.android.com/apk/res/android"
    android:label="@string/app_name"
    android:hint="Recipe Search" />

最佳答案

您应该在 searchView 中添加 onQueryTextListener

@Override
public boolean onCreateOptionsMenu(Menu menu) {
        getMenuInflater().inflate(R.menu.category_menu, menu);
        SearchView searchView = (SearchView) menu.findItem(R.id.category_search).getActionView();
        SearchManager searchManager = (SearchManager) getSystemService(Context.SEARCH_SERVICE);
        searchView.setSearchableInfo(searchManager.getSearchableInfo(new ComponentName(this, SearchResultsActivity.class)));
        searchView..setOnQueryTextListener(new SearchView.OnQueryTextListener() {
            @Override
            public boolean onQueryTextSubmit(String query) {
                startActivity(CategoryActivity.this, SearchResultActivity.class);
                return true;
            }

            @Override
            public boolean onQueryTextChange(String newText) {
                return false;
            }
        });
        return true;
}

关于java - Android 搜索 View 不调用搜索 Activity ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39893694/

相关文章:

java - 没有可用的类型 [...] 的合格 Bean

java - 安卓数据验证

XML-JSON 转换器规则

javax.xml.transform 带有凭据的源

java - 计算 Integer 值的每个数字的总和

java - 从 Stage 以外的地方获取散焦事件 - JavaFX

android - 仅供内部公司用户使用的 Google Play 部署

xml - 如何将具有重复字段的 XML 文件导入 FileMaker 数据库?

java - 在java中创建3D图像请帮忙

android - 拦截 Android 上的主页按钮