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.
SearchView
implementation on systems with API 11 and up (i.e. it's the same code with pros and cons on all platforms).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.