Android的ActionbarSherlock搜索查看Android、ActionbarSherlock

2023-09-06 00:19:43 作者:哥↘欢迎勾引

我们能使用ActionbarSherlock在Android 2.2的实现SeachView。

我使用下面的code,它工作正常在3.0,但没有工作在2.2

  @覆盖
公共布尔onCreateOptionsMenu(功能菜单){
    //getMenuInflater().inflate(R.menu.main_menu,菜单);
     MenuInflater充气= getMenuInflater();
        inflater.inflate(R.menu.main_menu,菜单);
    //建立一个监听器的刷新项目


        搜索查看搜索查看=(搜索查看)menu.findItem(R.id.menu_search).getActionView();
        最后SearchView.OnQueryTextListener queryTextListener =新SearchView.OnQueryTextListener(){
            @覆盖
            公共布尔onQueryTextChange(字符串newText){
                // 做一点事
                的System.out.println(onQueryTextChange ----------);
                返回true;
            }
            @覆盖
            公共布尔onQueryTextSubmit(查询字符串){
                // 做一点事
                的System.out.println(onQueryTextSubmit ----------);
                返回true;
            }
        };
        sea​​rchView.setOnQueryTextListener(queryTextListener);

   返回true;
     }
 

我收到以下错误在2.2

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

解决方案 超级详细Android Studio下载安装教程

一个小更新:

杰克沃顿商学院目前正在ActionBarSherlock 4.2.0在开发分支,具有搜索查看向后移植有。它的功能有限(最显着的 - 对 SearchableInfo 不支持)。但他正在不断扩大的功能。

我不知道杰克沃顿商学院的意图上向后移植搜索查看,做我的反向移植的版本(可以在github上找到:的 ABS-搜索视图)。我的版本也不支持 SearchableInfo

这两种实现方式是在几乎相同的方式完成。他们用很多从AOSP采取了同样的code。但也有一些显着的差异。

ActionBarSherlock反向移植支持建议适配器 ActionBarSherlock反向移植不会对带有API 11及以上系统的原搜索查看执行(即它与优点和缺点在所有平台上相同的code)回退。 在我的版本不支持的建议适配器(它虽然可以增加)。 在我的版本对API 11之前的系统功能有限(其中code反向移植版本使用)和API 11和更高的一切回退给原机版本搜索查看键,所有功能都支持他们的文档中描述的方式。

就个人而言,我建议你用ActionBarSherlock版贴(它只是更容易这样)。用我的库只有在需要与API 11系统中,这个功能齐全的行为了。

Can we implement SeachView in Android 2.2 using ActionbarSherlock.

I am using following code, it is working fine in 3.0 but not working in 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;
     }

I am getting following error on 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)

解决方案

A small update:

Jake Wharton is currently working on ActionBarSherlock 4.2.0 in dev branch and has SearchView backported there. It has limited functionality (most notable - no support for SearchableInfo). But he is working on expanding functionality.

I didn't know about Jake Wharton's intentions on backporting SearchView and did my version of backport (can be found on github: abs-search-view). My version also does not support SearchableInfo.

These two implementations were done in mostly the same way. They use much of the same code taken from AOSP. But there are some notable differences.

ActionBarSherlock backport supports suggestions adapter ActionBarSherlock backport does not fallback on original SearchView implementation on systems with API 11 and up (i.e. it's the same code with pros and cons on all platforms). My version does not support suggestions adapter (it can be added though). My version has limited functionality on systems before API 11 (where backport version of code is used) and on API 11 and higher everything fallbacks to original native version of SearchView and all features are supported the way they are described in documentation.

Personally, I'd recommend sticking with ActionBarSherlock version (it's just easier that way). And use my library only if you need this fully functional behavior on systems with API 11 and up.

 
精彩推荐
图片推荐