尝试从SearchRecentSuggestionsProvider获取最近搜索建议的完整列表时出错

时间:2017-06-06 05:07:49

标签: android android-layout

想做: 获取最近的搜索建议列表,然后在列表视图中显示,下面是代码,PS。已经在数据库中有一些建议。

......
private String string_uri = "content://com.xyz.music_search_provider/" + SearchManager.SUGGEST_URI_PATH_QUERY;
private Uri uri=Uri.parse(string_uri);
private String[] projection={SearchManager.SUGGEST_COLUMN_QUERY};
.....
cursor=getContentResolver().query(uri,projection,null,null,null);
search_history_list=(ListView)findViewById(R.id.search_history_list);
simpleCursorAdapter=new SimpleCursorAdapter(this,android.R.layout.simple_list_item_1,cursor,
            new String[] { SearchManager.SUGGEST_COLUMN_QUERY },new int[]{android.R.id.text1},SearchManager.FLAG_QUERY_REFINEMENT);
search_history_list.setAdapter(simpleCursorAdapter);

自定义搜索提供程序扩展SearchRecentSuggestionsProvider

public class MusicSearchProvider extends SearchRecentSuggestionsProvider {

public MusicSearchProvider() {
    setupSuggestions("com.xyz.music_search_provider",DATABASE_MODE_QUERIES|DATABASE_MODE_2LINES);
   }
}

问题是,当运行时,错误显示

cursor=getContentResolver().query(uri,projection,null,null,null);
Caused by: java.lang.NullPointerException: Attempt to read from null array

如下所示更改

cursor=getContentResolver().query(uri,null,null,null,null);

错误是一样的。 但改变就好了,

cursor=getContentResolver().query(uri,null,null,new String[]{query},null);

没有显示错误,但列表视图中只显示了一个结果。 任何人都知道为什么以及如何解决这个问题,请帮助我。

1 个答案:

答案 0 :(得分:0)

找到解决方案,但仍然不太清楚,改变如下,

cursor=getContentResolver().query(uri,null,null,new String[]{""},null);

未将selectionArgs设置为null,但设置""这将显示SearchRecentSuggestionsProvider中的所有结果