Android使用支持库来支持SearchView

8
这是我的代码:
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.HONEYCOMB) {
    MenuItem searchItem = menu.findItem(R.id.searchMenuItem);
    SearchManager searchManager =
        (SearchManager) getSystemService(Context.SEARCH_SERVICE);
    SearchView searchView = (SearchView) MenuItemCompat.getActionView(searchItem);
    // searchView.set
    searchView.setSearchableInfo(
        searchManager.getSearchableInfo(getComponentName()));
    searchView.setIconifiedByDefault(false);
}

我的最小API版本是8。
我遇到了编译错误

Call requires API level 11 (current min is 8):
    android.widget.SearchView#setSearchableInfo

请注意,我不能更改最低SDK。


这个错误实际上可以忽略。在Eclipse中有一个设置可以关闭它。或者,如果您在Eclipse的任何其他文件中按下调试按钮,它不会停止构建。 - Gabe Sechan
使用editText代替searchview。清单文件中的最小SDK是多少? - Raghunandan
@VishalSantharam 我的意思是我想支持2.2及更高版本的设备。 - user2059935
@GabeSechan 如果我忽略了那个错误,我的应用程序仍然可以在Android 2.2及更高版本上运行吗? - user2059935
@Raghunandan 能不能给我举个例子? - user2059935
显示剩余4条评论
1个回答

9

您可以使用android.support.v7.widget.SearchView代替android.widget.SearchView

您的代码可能如下所示:

if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.HONEYCOMB) {
                MenuItem searchItem = menu.findItem(R.id.searchMenuItem);
                SearchManager searchManager =
                        (SearchManager) getSystemService(Context.SEARCH_SERVICE);
                android.support.v7.widget.SearchView searchView = (android.support.v7.widget.SearchView) MenuItemCompat.getActionView(searchItem);

                searchView.setSearchableInfo(
                        searchManager.getSearchableInfo(getComponentName()));
                searchView.setIconifiedByDefault(false);

            }

此外,请更多地了解 SearchViewCompat

我正在测试你的解决方案。 - user2059935

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接