Android ActionbarSherlock SearchView

Android ActionbarSherlock SearchView,android,actionbarsherlock,Android,Actionbarsherlock,我们可以使用ActionbarSherlock在Android 2.2中实现SeachView吗 我正在使用以下代码,它在3.0中运行良好,但在2.2中不起作用 @Override public boolean onCreateOptionsMenu(Menu menu) { //getMenuInflater().inflate(R.menu.main_menu, menu); MenuInflater inflater = getMenuInflater();

我们可以使用ActionbarSherlock在Android 2.2中实现SeachView吗

我正在使用以下代码,它在3.0中运行良好,但在2.2中不起作用

 @Override
public boolean onCreateOptionsMenu(Menu menu) {
    //getMenuInflater().inflate(R.menu.main_menu, menu);
     MenuInflater inflater = getMenuInflater();
        inflater.inflate(R.menu.main_menu, menu);
    // set up a listener for the refresh item


        SearchView searchView = (SearchView) menu.findItem(R.id.menu_search).getActionView();
        final SearchView.OnQueryTextListener queryTextListener = new    SearchView.OnQueryTextListener() {
            @Override
            public boolean onQueryTextChange(String newText) {
                // Do something
                System.out.println("onQueryTextChange----------");
                return true;
            }
            @Override
            public boolean onQueryTextSubmit(String query) {
                // Do something
                System.out.println("onQueryTextSubmit----------");
                return true;
            }
        };
        searchView.setOnQueryTextListener(queryTextListener);

   return true;
     }
我在2.2上遇到以下错误

    at 01-23 17:31:53.230: W/MenuInflater(20214):   at java.lang.ClassLoader.loadClass(ClassLoader.java:511)
01-23 17:31:53.230: W/MenuInflater(20214):  at com.actionbarsherlock.internal.view.menu.MenuInflaterImpl$MenuState.newInstance(MenuInflaterImpl.java:533)
01-23 17:31:53.230: W/MenuInflater(20214):  at com.actionbarsherlock.internal.view.menu.MenuInflaterImpl$MenuState.setItem(MenuInflaterImpl.java:497)
01-23 17:31:53.230: W/MenuInflater(20214):  at com.actionbarsherlock.internal.view.menu.MenuInflaterImpl$MenuState.addItem(MenuInflaterImpl.java:515)
01-23 17:31:53.230: W/MenuInflater(20214):  at com.actionbarsherlock.internal.view.menu.MenuInflaterImpl.parseMenu(MenuInflaterImpl.java:238)
01-23 17:31:53.230: W/MenuInflater(20214):  at com.actionbarsherlock.internal.view.menu.MenuInflaterImpl.inflate(MenuInflaterImpl.java:164)
01-23 17:31:53.230: W/MenuInflater(20214):  at com.actionbarsherlock.sample.styledactionbar.MainActivity.onCreateOptionsMenu(MainActivity.java:99)
01-23 17:31:53.230: W/MenuInflater(20214):  at android.support.v4.app.FragmentActivity.dispatchCreateOptionsMenu(FragmentActivity.java:601)
01-23 17:31:53.230: W/MenuInflater(20214):  at android.support.v4.app.FragmentActivity.invalidateOptionsMenu(FragmentActivity.java:706)

不幸的是,从我阅读和尝试的内容来看,ActionBarSherlock不支持SearchView小部件

Android将在未来发布一个支持此功能的向后兼容包,但谁知道什么时候会发布

查看该男子本人的链接:
我遇到了类似的问题,因此我创建了一个自定义的SearchView。也许您想在

上查看它,一个小的更新:

  • Jake Wharton目前正在
    dev
    分支中开发ActionBarSherlock 4.2.0,并在那里进行了
    SearchView
    后端口。它的功能有限(最值得注意的是,不支持
    SearchableInfo
    )。但他正在努力扩展功能

  • 我不知道Jake Wharton在backporting
    SearchView
    上的意图,我做了我版本的backport(可以在github上找到:)。我的版本也不支持
    SearchableInfo

这两种实现的方式基本相同。它们使用的代码与AOSP中的代码基本相同。但也有一些显著的区别

  • ActionBarSherlock backport支持建议适配器
  • ActionBarSherlock backport在使用API 11及更高版本的系统上不依赖原始的
    SearchView
    实现(即,在所有平台上,它的代码都是相同的,有优缺点)
  • 我的版本不支持建议适配器(但可以添加)
  • 我的版本在API 11之前的系统(使用代码的后端口版本)和API 11及更高版本上的功能有限,所有功能都会回退到原始原生版本的
    SearchView
    ,并且所有功能都以文档中描述的方式得到支持
就个人而言,我建议坚持使用ActionBarSherlock版本(这样更容易)。只有在使用API 11及更高版本的系统上需要此全功能行为时,才使用我的库。


<?xml version="1.0" encoding="utf-8"?>
<menu xmlns:android="http://schemas.android.com/apk/res/android" >

    <item
    android:id="@+id/search"
    android:actionLayout="@layout/layout_menu_search"
    android:actionViewClass="com.actionbarsherlock.widget.SearchView"
    android:icon="@drawable/ic_menu_search"
    android:orderInCategory="1"
    android:showAsAction="always|collapseActionView"/>

</menu>

另一种选择是根据操作系统版本对搜索视图小部件进行分类。为预蜂窝设备创建自己的搜索视图小部件,并使用API-11+的默认值。
SearchView
是一个非常高级的小部件。它的后端口不会是微不足道的。正如相关问题所说,这可能会在未来发生,但这不是我的优先事项。不过,对于某人的贡献来说,这将是完美的…SearchView在4.2版的ABS中实现。SearchableInfo仍然不受支持吗?也就是说,在2012年12月6日发布的“配置搜索小部件”中,人们不能遵循本教程,因为SearchView是在ABS的4.2版中实现的。请查看。我没有用低于3.0的版本测试过它。