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