searchManager.getSearchableInfo(getComponentName());返回null

时间:2018-03-16 11:28:21

标签: java android

我在下面看过这些链接。但是,仍然我的getSearchableInfo返回null并且不能踢搜索。 我用户搜索小部件。因此,搜索执行和获取结果都在同一个Activity上完成。

我目前正在使用onQueryTextSubmit。但是,我无法在SearchView上设置文本,并且错过了从另一个Activity传递的查询字符串的参数。这很烦人。

Android: getSearchableInfo(getComponentName()) returning null? searchManager.getSearchableInfo(getComponentName()) returns null

我上传了class和xmls。

RES / XML / searchable.xml:

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

<searchable xmlns:android="http://schemas.android.com/apk/res/android"
    android:hint="@string/search_condition"
    android:label="@string/search_label"
    android:searchSuggestAuthority="company_crediation"
    android:searchSuggestIntentAction="android.intent.action.VIEW"
    android:searchSuggestSelection=" ? ">
</searchable>

Manifext.xml CompanySearchActivity有searchview,这个Activity将由HomeActivity上的一个片段启动。

<application
    android:allowBackup="true"
    android:icon="@drawable/icon"
    android:label="@string/app_name"
    android:roundIcon="@drawable/icon"
    android:supportsRtl="true">
    <activity android:name=".NoDisplayActivity"
        android:theme="@style/CcAppTheme">
        <intent-filter>
            <action android:name="android.intent.action.MAIN" />

            <category android:name="android.intent.category.LAUNCHER" />
        </intent-filter>
    </activity>
    <activity
        android:name=".HomeActivity"
        android:label="@string/app_name"
        android:theme="@style/CcAppTheme"></activity>
    <activity
        android:name=".CompanySearchActivity"
        android:launchMode="singleTop"
        android:label=""
        android:theme="@style/CcAppThemeSearch">
        <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.app.default_searchable"
            android:value=".CompanySearchActivity" />
    </activity>
</application>

CompanySearchActivity.java 如前所述,OnQueryTextListener我正在使用它,因为我遇到了这个问题。

public boolean onCreateOptionsMenu(Menu menu) {
    MenuInflater inflater = getMenuInflater();
    inflater.inflate(R.menu.company_search_bar, menu);

    SearchManager searchManager = (SearchManager) getSystemService(Context.SEARCH_SERVICE);
    SearchView searchView = (SearchView)menu.findItem(R.id.company_search).getActionView();
    SearchableInfo searchableInfo = searchManager.getSearchableInfo(getComponentName());
    searchView.setSearchableInfo(searchableInfo);
    searchView.setOnQueryTextListener(new SearchView.OnQueryTextListener() {
        @Override
        public boolean onQueryTextSubmit(String query) {
            doSearchWithQuery(query);
            return false;
        }

        @Override
        public boolean onQueryTextChange(String newText) {
            return false;
        }
    });
    searchView.setIconified(false);
    searchView.setSubmitButtonEnabled(false);

    return true;
}

我希望有人帮助我。

0 个答案:

没有答案