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=" ?" >。当您在搜索视图中键入“某物”时,它会传递“某物”,左侧有空格。所以解决方案是删除空间,但是'?是 Android XML 文件中的特殊字符,这意味着您必须对其进行转义。

所以最终的解决方案是android:searchSuggestSelection="\?" >

于 2015-03-26T14:45:34.317 回答
1

尝试删除行中的空格android:searchSuggestSelection=" ?" >

android:searchSuggestSelection="?" >

于 2013-04-09T02:18:37.713 回答