4

SearchView検索インターフェイスを作成しましたActionBarが、検索可能な構成ファイルに接続できないようです。onCreateOptionsMenuメソッドで取得しようとすると、SearchManager.getSearchableInfo(getComponentName()null が返されます。誰かがこれで私を助けてくれますか?

Settings.onCreateOptionsMenu(メニュー)

@Override
public boolean onCreateOptionsMenu(Menu menu) {
    super.onCreateOptionsMenu(menu);
    MenuInflater inflater = getMenuInflater();
    inflater.inflate(R.menu.activity_main, menu);

    SearchManager sm = (SearchManager) getSystemService(Context.SEARCH_SERVICE);
    SearchView sv = (SearchView) menu.findItem(R.id.menu_search).getActionView();
    SearchableInfo info = sm.getSearchableInfo(getComponentName()); //This variable is returned as null                                                      
    sv.setSearchableInfo(info);
    sv.setIconifiedByDefault(false);
    sv.setSubmitButtonEnabled(true);
    return true;
}

AndroidManifest.xml の設定アクティビティ

<activity
        android:name=".Settings"
        android:label="@string/app_name"
        android:screenOrientation="portrait" >
        <intent-filter>
            <action android:name="android.intent.action.MAIN" />

            <category android:name="android.intent.category.LAUNCHER" />
        </intent-filter>

        <meta-data
            android:name="android.app.searchable"
            android:resource="@xml/searchable" />
    </activity>

AndroidManifest.xml の検索可能なアクティビティ

 <activity
        android:name=".ImageSearch"
        android:label="@string/app_name" >
        <intent-filter>
            <action android:name="android.intent.action.SEARCH" />
        </intent-filter>
    </activity>

<?xml version="1.0" encoding="utf-8"?>メニュー xml ファイルにヘッダーがあり、プロジェクトをクリーンアップしようとしました。それらのどれもトリックをしていないようです。

4

3 に答える 3

9

分かった、気にしないで。いくつかの調査の後、検索インターフェイスを作成するための Android ドキュメントが完全ではないことがわかりました。

1) 検索可能な構成で文字列をハードコーディングしないでください

<activity>2)検索を行うには、次のコードが必要です。

 <meta-data
            android:name="android.app.searchable"
            android:resource="@xml/your search configuration file's name" />

3) を表示し<activity>たい場所にもこのコードを配置する必要がありますSearchViewActionBar

 <meta-data
            android:name="android.app.default_searchable"
            android:value=".ActivityWhichCarriesOutTheSearch" />

完了するために:これが機能する私のマニフェストファイルです:

<application
        android:allowBackup="true"
        android:icon="@mipmap/ic_launcher"
        android:label="@string/app_name"
        android:supportsRtl="false"
        android:theme="@style/AppTheme">
    <activity
            android:name=".MainActivity"
            android:label="@string/app_name"
            android:theme="@style/AppTheme.NoActionBar">
        <intent-filter>
            <action android:name="android.intent.action.MAIN" />
            <category android:name="android.intent.category.LAUNCHER" />
        </intent-filter>
        <meta-data
                android:name="android.app.default_searchable"
                android:value=".SearchActivity" />
    </activity>
    <activity android:name=".SearchActivity"
            android:label="@string/app_name">
        <intent-filter>
            <action android:name="android.intent.action.SEARCH" />
        </intent-filter>
        <meta-data android:name="android.app.searchable"
                android:resource="@xml/searchable"/>
    </activity>
</application>
于 2013-01-01T00:19:20.643 に答える
1

mainactivtityでActionBarActivityを拡張する場合、menu_item で searchview を型キャストする必要があります

"android.support.v7.widget.SearchView"

私もこれを使用して同じエラーを受け取りました:ありがとう....

<item android:id="@+id/search"
android:title="Search for coupons,deals,stores,etc....."
android:icon="@drawable/ic_search"
app:showAsAction="always"
app:actionViewClass="android.support.v7.widget.SearchView" />
于 2015-09-10T05:53:40.090 に答える