J'ai actuellement la version 4.2.0 d'ActionbarSherlock implémentée dans une application Android. Et j'ai un problème avec le widget SearchView.ClassNotFoundException avec ActionbarSherlock SearchView
J'ai actuellement le widget mis en œuvre comme ceci:
import com.actionbarsherlock.app.ActionBar.Tab;
import com.actionbarsherlock.app.SherlockFragmentActivity;
import com.actionbarsherlock.view.Menu;
import com.actionbarsherlock.view.MenuItem;
import com.actionbarsherlock.widget.SearchView;
import com.actionbarsherlock.widget.SearchView.OnQueryTextListener;
public class MainActivity extends SherlockFragmentActivity
{
/*...*/
@Override
public boolean onCreateOptionsMenu(Menu menu) {
SearchView searchView = new SearchView(getSupportActionBar().getThemedContext());
searchView.setQueryHint(getResources().getString(R.string.searchHint_Label));
searchView.setIconifiedByDefault(true);
searchView.setOnQueryTextListener(new OnQueryTextListener(){
@Override
public boolean onQueryTextSubmit(String query) {
// Do stuff
}
@Override
public boolean onQueryTextChange(String newText) {
// TODO Auto-generated method stub
return false;
}
});
menu.add("Search")
.setIcon(R.drawable.abs__ic_search)
.setActionView(searchView)
.setShowAsAction(MenuItem.SHOW_AS_ACTION_IF_ROOM | MenuItem.SHOW_AS_ACTION_COLLAPSE_ACTION_VIEW);
return true;
}
}
Maintenant, chaque fois que je commence débogage de l'application que je reçois l'erreur suivante au constructeur de la SearchView:
01-01 11:46:40.365: E/dalvikvm(1385): Could not find class 'com.actionbarsherlock.widget.SearchView$11', referenced from method com.actionbarsherlock.widget.SearchView.<init>
Call Stack:
Thread [<1> main] (Suspended (exception ClassNotFoundException))
<VM does not provide monitor information>
PathClassLoader.findClass(String) line: 240
PathClassLoader(ClassLoader).loadClass(String, boolean) line: 551
PathClassLoader(ClassLoader).loadClass(String) line: 511
DexFile.defineClass(String, ClassLoader, int, ProtectionDomain) line: not available [native method]
DexFile.loadClassBinaryName(String, ClassLoader) line: 207
PathClassLoader.findClass(String) line: 200
PathClassLoader(ClassLoader).loadClass(String, boolean) line: 551
PathClassLoader(ClassLoader).loadClass(String) line: 511
MainActivity.onCreateOptionsMenu(Menu) line: 124
MainActivity(Watson).onCreatePanelMenu(int, Menu) line: 45
ActionBarSherlockCompat(ActionBarSherlock).callbackCreateOptionsMenu(Menu) line: 559
ActionBarSherlockCompat.preparePanel() line: 479
ActionBarSherlockCompat.dispatchInvalidateOptionsMenu() line: 272
ActionBarSherlockCompat$1.run() line: 984
ViewRoot(Handler).handleCallback(Message) line: 587
ViewRoot(Handler).dispatchMessage(Message) line: 92
Looper.loop() line: 130
ActivityThread.main(String[]) line: 3683
Method.invokeNative(Object, Object[], Class, Class[], Class, int, boolean) line: not available [native method]
Method.invoke(Object, Object...) line: 507
ZygoteInit$MethodAndArgsCaller.run() line: 839
ZygoteInit.main(String[]) line: 597
NativeStart.main(String[]) line: not available [native method]
Cette erreur se produit au sein de toutes les versions Android que je supporte avec l'application (2.2 - 4.2) Lorsque je relance le débogage après que cette exception se soit produite, l'application tourne bien et le SearchView marche bien, mais je me demande toujours pourquoi cette exception se produit.
J'ai essayé de déplacer la définition de menu XML comme vous le suggérez, mais il n'a pas Résolvez l'exception. L'exception se produit toujours à 'inflater.inflate' –
ce qui fait problème dans inflater.inflate? –
s'il vous plaît vérifier votre activité cette importation com.actionbarsherlock.view.MenuInflater restent –