2013-08-22 41 views
8

我在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 
+0

它不能找到这个类。你在'libs'文件夹中有这个库吗? –

+0

是的,我有库中的SearchView类,我已经导入android-support-v7-appcompat库来添加actionbare pre API 11 – Bombolo

+0

您是否添加了支持库v7? – Azrael94

回答

11

没有大量的代码去关在这里,但我碰到这种情况我这里是发生了什么事我:

我用的是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; 
    } 
}); 
+0

在我应该提及的事情上,我使用Android Studio(和IntelliJ),它给我编译错误...但它的工作原理和运行情况并没有问题......我已经向AndroidSt提交了一个bug udio:https://code.google.com/p/android/issues/detail?id=59692&thanks=59692&ts=1378237307 – xbakesx

5

你需要确保你正确添加了Android支持库在Eclipse从日志“找不到类android.support.v7.widget.SearchView删除下列错误从方法android.support.v7.widget.SearchView.addOnLayoutChangeListenerToDropDownAnchorSDK11'引用$ 5。

需要记住的重要事情,不要忘记取消选中Android的依赖添加支持库时,因为V7程序兼容性图书馆的资源。在您的支持库项目中对您的依赖进行更改后,清理支持库项目即可。

请参阅官方Google doco的Adding Libraries with Resources部分关于如何向资源添加支持库的完整步骤。从案例链接更改上面提到的DOCO

摘录于未来:

  1. 确保您已使用 SDK管理器下载了Android的支持库。
  2. 创建库项目,并确保所需的JAR文件 包含在项目的构建路径:
    • 选择File> Import。
    • 选择现有的Android代码进入工作区,然后单击下一步。
    • 浏览到SDK安装目录,然后浏览到Support Library 库文件夹。例如,如果要添加appcompat 项目,请浏览至/ extras/android/support/v7/appcompat /。
    • 单击完成导入项目。对于v7 appcompat项目,您现在应该看到一个名为android-support-v7-appcompat的新项目,其中 。
    • 在新库项目中,展开libs /文件夹,右键单击每个 .jar文件,然后选择构建路径>添加到构建路径。例如,在创建v7 appcompat项目时,请将 android-support-v4.jar和android-support-v7-appcompat.jar文件添加到 构建路径中。
    • 右键单击项目,然后选择“构建路径”>“配置构建路径”。在Order和Export选项卡中,检查刚刚添加到构建路径的.jar文件,以便它们可用于依赖此库项目的项目。例如,appcompat项目要求您导出android-support-v4.jar和android-support-v7-appcompat.jar文件。
    • 取消选中Android依赖项。
    • 单击确定完成更改。
0

您需要将缺失的支持库添加到项目。 在Eclipse为:右键单击项目

选择Android的工具/添加支持库...

相关问题