【发布时间】:2014-04-04 17:52:01
【问题描述】:
我正在尝试从片段中收听我的 SearchView 中的文本更改,但在此行失败:menu.findItem(R.id.action_search);
例外:
java.lang.ClassCastException: android.support.v7.internal.view.menu.MenuItemWrapperJB cannot be cast to android.support.v7.widget.SearchView
at se.xxx.xxx.FragmentList.onCreateOptionsMenu(FragmentList.java:155)
我的 onCreateOptionsMenu(在 Fragment 中):
@Override
public void onCreateOptionsMenu(Menu menu, MenuInflater inflater) {
super.onCreateOptionsMenu(menu, inflater);
inflater.inflate(R.menu.main, menu);
SearchView sv = (SearchView) menu.findItem(R.id.action_search); //crashes here
sv.setOnQueryTextListener(new SearchView.OnQueryTextListener() {
@Override
public boolean onQueryTextSubmit(String s) {
return false;
}
@Override
public boolean onQueryTextChange(String s) {
adapter.getFilter().filter(s.toString());
return false;
}
});
}
菜单布局xml(main.xml):
<menu xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
tools:context="se.xxx.xxx.MainActivity" >
<item
app:actionViewClass="android.support.v7.widget.SearchView"
android:id="@+id/action_search"
android:icon="@android:drawable/ic_menu_search"
android:title="blabla"
app:showAsAction="always"
/>
【问题讨论】:
-
在 Fragment 类中确保您已导入
android.support.v7.widget包? -
android.support.v7.widget.SearchView 已导入
标签: android android-fragments searchview