Bom*_*olo 8 java android android-logcat
我在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
Run Code Online (Sandbox Code Playgroud)
xba*_*esx 11
这里没有很多代码,但我自己遇到了这种情况,这就是我发生的事情:
我正在使用v7 compat库以便在Android 2上安装ActionBar我正在实现搜索界面的东西.
基本设置代码(in 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()));
Run Code Online (Sandbox Code Playgroud)
糟糕的代码
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;
}
});
Run Code Online (Sandbox Code Playgroud)
不幸的是,这里的问题是我们正在调用仅在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;
}
});
Run Code Online (Sandbox Code Playgroud)
小智 5
您需要确保在Eclipse中正确添加Android支持库以从日志中删除以下错误'无法找到类android.support.v7.widget.SearchView.addOnLayoutChangeListenerToDropDownAnchorSDK11中引用的类android.support.v7.widget.SearchView $ 5 ".
要记住的关键是,在添加支持库时不要忘记取消选中Android Dependencies,因为v7 appcompat库有资源.在对支持库项目中的依赖项进行更改后,清理支持库项目,就是这样.
有关如何使用资源添加支持库的信息,请参阅使用官方Google doco的资源添加库一节中的完整过程.
摘录以上引用的doco以防万一将来链接发生变化:
| 归档时间: |
|
| 查看次数: |
10285 次 |
| 最近记录: |