2013-08-22 63 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的工具/添加支持庫...

相關問題