///menu_main.xml
<itemandroid:id="@+id/search"
android:icon="@drawable/title_search_normal"
android:title="搜索"
app:actionViewClass="android.support.v7.widget.SearchView"
app:showAsAction="ifRoom|collapseActionView" />
在使用onCreateOptionsMenu时候,app启动闪退
public boolean onCreateOptionsMenu(Menu menu) {
// Inflate the menu; this adds items to the action bar if it is present.
getMenuInflater().inflate(R.menu.menu_main, menu);
MenuItem search = menu.findItem(R.id.search);
测试会闪退
search.setOnActionExpandListener(new MenuItem.OnActionExpandListener() {
@Override
public boolean onMenuItemActionExpand(MenuItem item) {
//展开
return true;
}
@Override
public boolean onMenuItemActionCollapse(MenuItem item) {
//回收
doRefresh();
return true;
}
});
return true;
}
修改如下:
SearchView sv;
@Override
public boolean onCreateOptionsMenu(Menu menu) {
// Inflate the menu; this adds items to the action bar if it is present.
getMenuInflater().inflate(R.menu.menu_main, menu);
MenuItem search = menu.findItem(R.id.search);
//测试会闪退
// search.setOnActionExpandListener(new MenuItem.OnActionExpandListener() {
// @Override
// public boolean onMenuItemActionExpand(MenuItem item) {
// //展开
// return true;
// }
//
// @Override
// public boolean onMenuItemActionCollapse(MenuItem item) {
// //回收
// doRefresh();
// return true;
// }
// });
//获取到searchView
//sv = (SearchView)search.getActionView();
sv = (SearchView) MenuItemCompat.getActionView(search);
MenuItemCompat.setOnActionExpandListener(search, new MenuItemCompat.OnActionExpandListener() {
@Override
public boolean onMenuItemActionExpand(MenuItem item) {
Toast.makeText(MainActivity.this,"展开", Toast.LENGTH_LONG).show();
return true;
}
@Override
public boolean onMenuItemActionCollapse(MenuItem item) {
Toast.makeText(MainActivity.this,"返回", Toast.LENGTH_LONG).show();
doRefresh();
return true;
}
});
//sv.setIconified(false);
sv.setSubmitButtonEnabled(true);//提交按钮
sv.setQueryHint("输入查找应用名");
sv.setOnQueryTextListener(this);//
sv.setIconifiedByDefault(false);//设置展开后图标的样式,这里只有两种,一种图标在搜索框外,一种在搜索框内
sv.setOnCloseListener(new SearchView.OnCloseListener() {
@Override
public boolean onClose() {
return true;
}
});
return true;
}
///请高手帮我看看什么原因?