【发布时间】:2017-06-03 21:15:03
【问题描述】:
我在片段中有一个工具栏,我想为这个工具栏添加 searchView
我有这个:
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;
}
});
}
还有这个项目菜单:
<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...
帮助?
【问题讨论】:
-
View getActionView (MenuItem item)已弃用:developer.android.com/reference/android/support/v4/view/… -
哦...谢谢我去搜索其他的mettod
-
@VeneetReddy - 它仅在版本 26.0.0 中被弃用,该版本仍处于 alpha 阶段。如果您使用的是支持库的早期版本,您仍然需要使用
MenuItemCompat.getActionView。
标签: java android android-fragments searchview