3

ここに示すように、データベースから提案を有効にする必要がある検索ダイアログがありますhttp://developer.android.com/images/search/search-suggest-custom.png

アクションバーのメニュー項目をクリックすると、検索ダイアログが上部に表示されます。ユーザーがテキストの入力を開始すると、データベースを検索し、それに応じて提案を表示する必要があります。今のところ、検索ダイアログがありますが、ユーザーがテキストを入力しても候補は表示されません。

私のコンテンツ プロバイダ:

public class MyCustomSuggestionProvider extends ContentProvider {
    SQLiteDatabase db;
    SQLiteQueryBuilder qb;
    String sqlTables = "countries";

    @Override
    public int delete(Uri uri, String selection, String[] selectionArgs) {
        return 0;
    }

    @Override
    public String getType(Uri uri) {
        return null;
    }

    @Override
    public Uri insert(Uri uri, ContentValues values) {
        return null;
    }

    @Override
    public boolean onCreate() {

        return false;
    }
    public Cursor query(Uri uri, String[] projection, String selection,
            String[] selectionArgs, String sortOrder) {
        MyDatabase myDB = new MyDatabase(getContext());
        db = myDB.getReadableDatabase();
        Cursor c = null;

        if (selectionArgs != null && selectionArgs.length > 0
                && selectionArgs[0].length() > 0) {

            qb = new SQLiteQueryBuilder();
            String[] sqlSelect = { "name" };
            qb.setTables(sqlTables)

                c = qb.query(db, null, selection, selectionArgs, null, null,
                        null);
                c.moveToFirst();
        } else {
            return null;
        }
        return c;
    }
    @Override
    public int update(Uri uri, ContentValues values, String selection,
            String[] selectionArgs) {
        return 0;
    }

}

私のマニフェスト:

    <application
            android:allowBackup="true"
            android:icon="@drawable/ic_launcher"
            android:label="@string/app_name"
            android:theme="@style/Theme.Visa" >
            <provider
                android:name="com.m7.visa.contentprovider.MyCustomSuggestionProvider"
                android:authorities="com.m7.visa.contentprovider.MyCustomSuggestionProvider" >
            </provider>

            <activity
                android:name="com.m7.visa.MainActivity"
                android:label="@string/app_name" >
                <intent-filter>
                    <action android:name="android.intent.action.MAIN" />

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

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

私の検索可能な構成:

<?xml version="1.0" encoding="utf-8"?>
<searchable xmlns:android="http://schemas.android.com/apk/res/android"
    android:hint="hint..."
    android:label="@string/app_name"
    android:searchSuggestAuthority="com.m7.visa.contentprovider.MyCustomSuggestionProvider"
    android:searchSuggestIntentAction="android.intent.action.VIEW"
    android:searchSuggestSelection=" ?" >

</searchable>

どこが間違っているのですか?

4

2 に答える 2

4

問題は疑問符にありandroid:searchSuggestSelection=" ?" >ます。検索ビューに「something」と入力すると、左側にスペースがある「something」が渡されます。したがって、解決策はスペースを削除することですが、「?」は Android XML ファイルの特殊文字です。つまり、エスケープする必要があります。

したがって、最終的な解決策はandroid:searchSuggestSelection="\?" >

于 2015-03-26T14:45:34.317 に答える
1

行のスペースを削除してみてくださいandroid:searchSuggestSelection=" ?" >

android:searchSuggestSelection="?" >

于 2013-04-09T02:18:37.713 に答える