我在y Logcat中得到这个错误。 有谁知道它是什么?
08-22 19:02:57.830: E/dalvikvm(660): Could not find class 'android.support.v7.widget.SearchView$5', referenced from method android.support.v7.widget.SearchView.addOnLayoutChangeListenerToDropDownAnchorSDK11
我在y Logcat中得到这个错误。 有谁知道它是什么?
08-22 19:02:57.830: E/dalvikvm(660): Could not find class 'android.support.v7.widget.SearchView$5', referenced from method android.support.v7.widget.SearchView.addOnLayoutChangeListenerToDropDownAnchorSDK11
没有大量的代码去关在这里,但我碰到这种情况我这里是发生了什么事我:
我用的是V7 compat的图书馆,以有Android 2上的ActionBar 我正在实施搜索界面的东西。
基本设置代码(onCreateOptionsMenu()
)
SearchManager searchManager =
(SearchManager) getActivity().getSystemService(Context.SEARCH_SERVICE);
SupportMenuItem searchMenuItem = ((SupportMenuItem) menu.findItem(R.id.menu_search));
SearchView searchView = (SearchView) searchMenuItem.getActionView();
searchView.setSearchableInfo(searchManager.getSearchableInfo(activity.getComponentName()));
糟糕的代码
searchMenuItem.setOnActionExpandListener(new MenuItem.OnActionExpandListener() {
@Override
public boolean onMenuItemActionExpand(MenuItem item) {
// on search expand stuff
return true;
}
@Override
public boolean onMenuItemActionCollapse(MenuItem item) {
// on search collapse stuff
return true;
}
});
遗憾的是这里的问题是,我们拨打的是只支持在V14,所以我们的方法当它尝试加载一些隐式使用的类时,会得到一个“奇怪的”运行时错误。这不是一个很好的解释,但基本上这是我们需要使用getSupportActionBar()
而不是getActionBar()
的原因。
优良程序代码
searchMenuItem.setSupportOnActionExpandListener(new MenuItemCompat.OnActionExpandListener() {
@Override
public boolean onMenuItemActionExpand(MenuItem item) {
// do work
return true;
}
@Override
public boolean onMenuItemActionCollapse(MenuItem item) {
// do work
return true;
}
});
在我应该提及的事情上,我使用Android Studio(和IntelliJ),它给我编译错误...但它的工作原理和运行情况并没有问题......我已经向AndroidSt提交了一个bug udio:https://code.google.com/p/android/issues/detail?id=59692&thanks=59692&ts=1378237307 – xbakesx
你需要确保你正确添加了Android支持库在Eclipse从日志“找不到类android.support.v7.widget.SearchView删除下列错误从方法android.support.v7.widget.SearchView.addOnLayoutChangeListenerToDropDownAnchorSDK11'引用$ 5。
需要记住的重要事情,不要忘记取消选中Android的依赖添加支持库时,因为V7程序兼容性图书馆的资源。在您的支持库项目中对您的依赖进行更改后,清理支持库项目即可。
请参阅官方Google doco的Adding Libraries with Resources部分关于如何向资源添加支持库的完整步骤。从案例链接更改上面提到的DOCO
摘录于未来:
您需要将缺失的支持库添加到项目。 在Eclipse为:右键单击项目
选择Android的工具/添加支持库...
它不能找到这个类。你在'libs'文件夹中有这个库吗? –
是的,我有库中的SearchView类,我已经导入android-support-v7-appcompat库来添加actionbare pre API 11 – Bombolo
您是否添加了支持库v7? – Azrael94