Java Android中的SearchView
我在片段中有一个工具栏,我想为这个工具栏添加searchView 我有这个:Java Android中的SearchView,java,android,android-fragments,searchview,Java,Android,Android Fragments,Searchview,我在片段中有一个工具栏,我想为这个工具栏添加searchView 我有这个: public void onCreateOptionsMenu(Menu menu, MenuInflater inflater) { super.onCreateOptionsMenu(menu, inflater); menu.clear(); getActivity().getMenuInflater().inflate(R.menu.menu_principal, menu);
public void onCreateOptionsMenu(Menu menu, MenuInflater inflater) {
super.onCreateOptionsMenu(menu, inflater);
menu.clear();
getActivity().getMenuInflater().inflate(R.menu.menu_principal, menu);
MenuItem item = menu.findItem(R.id.buscar);
SearchView searchView = (SearchView) MenuItemCompat.getActionView(item);
searchView.setOnQueryTextListener(new SearchView.OnQueryTextListener() {
@Override
public boolean onQueryTextSubmit(String query) {
return true;
}
@Override
public boolean onQueryTextChange(String newText) {
try {
ArrayList<Producto> listaFiltrada = filter(list,newText);
adapterProductos.setFilter(listaFiltrada);
}catch (Exception r) {
r.printStackTrace();
}
return true;
}
});
MenuItemCompat.setOnActionExpandListener(item, new MenuItemCompat.OnActionExpandListener() {
@Override
public boolean onMenuItemActionExpand(MenuItem item) {
return true;
}
@Override
public boolean onMenuItemActionCollapse(MenuItem item) {
adapterProductos.setFilter(list);
return true;
}
});
}
public void oncreateoptions菜单(菜单菜单,菜单充气机){
super.onCreateOptions菜单(菜单,充气机);
menu.clear();
getActivity().getMenuInflater().充气(R.menu.menu\u主体,菜单);
MenuItem=menu.findItem(R.id.buscar);
SearchView SearchView=(SearchView)MenuItemCompat.getActionView(项目);
searchView.setOnQueryTextListener(新的searchView.OnQueryTextListener(){
@凌驾
公共布尔值onQueryTextSubmit(字符串查询){
返回true;
}
@凌驾
公共布尔onQueryTextChange(字符串newText){
试一试{
ArrayList listaFiltrada=过滤器(列表,新文本);
adapterProductos.setFilter(listaFiltrada);
}捕获(异常r){
r、 printStackTrace();
}
返回true;
}
});
MenuItemCompat.setOnActionExpandListener(项,新MenuItemCompat.OnActionExpandListener(){
@凌驾
公共布尔值onMenuItemActionExpand(MenuItem项){
返回true;
}
@凌驾
公共布尔值onMenuItemActionCollapse(MenuItem项){
adapterProductos.setFilter(列表);
返回true;
}
});
}
和此项菜单:
<item android:title="Buscar"
android:id="@+id/buscar"
android:icon="@drawable/ic_search_white_24dp"
app:actionViewClass= "android:support.v7.widget.SearchView"
app:showAsAction="ifRoom|collapseActionView"
/>
但我有一个空指针
致命异常:主
流程:jaimeperezpedraza.org.tienda,PID:15971
java.lang.NullPointerException:尝试在空对象引用上调用虚拟方法“void android.widget.SearchView.setOnQueryTextListener(android.widget.SearchView$OnQueryTextListener)”
我想我没有很好地捕捉到searchView
帮忙 您的
NullPointerException
是由于searchView
为空。这是因为您的XML有<代码> APP:ActhVIEW类=“Android:Save:V7.WiGeult.SexVIEW” -请注意“类代码>:<代码>中间的类名。
它应该改为android.support.v7.widget.SearchView
:
<item android:title="Buscar"
android:id="@+id/buscar"
android:icon="@drawable/ic_search_white_24dp"
app:actionViewClass= "android.support.v7.widget.SearchView"
app:showAsAction="ifRoom|collapseActionView"
/>
查看getActionView(MenuItem项目)
已被弃用:哦……谢谢我去搜索其他项目mettod@VeneetReddy-它仅在版本26.0.0中被弃用,该版本仍为alpha。如果您使用的是早期版本的支持库,则仍然需要使用MenuItemCompat.getActionView
。