我正在尝试在我的项目中实现SearchView,但我的onQueryTextSubmit,onQueryTextChange,onMenuItemActionExpand和onMenuItemActionCollapse不起作用。我的minsdkversion是17。
我的XML:
<item android:id="@+id/action_search"
android:title="@string/search_title"
android:icon="@drawable/ic_home"
android:visible="true"
yourapp:showAsAction="always|collapseActionView"
yourapp:actionViewClass="android.support.v7.widget.SearchView" />
我的JavaMain:
public class MainActivity extends ActionBarActivity implements OnQueryTextListener, OnActionExpandListener {
...
@Override
public boolean onCreateOptionsMenu(Menu menu) {
getMenuInflater().inflate(R.menu.menu_main, menu);
MenuItem searchItem = menu.findItem(R.id.action_search);
SearchView searchView = (SearchView) MenuItemCompat.getActionView(searchItem);
searchView.setOnQueryTextListener(this);
MenuItemCompat.setOnActionExpandListener(searchItem, this);
searchView.setIconifiedByDefault(true);
return super.onCreateOptionsMenu(menu);
}
@Override
public boolean onOptionsItemSelected(MenuItem item) {
// toggle nav drawer on selecting action bar app icon/title
if (mDrawerToggle.onOptionsItemSelected(item)) {
return true;
}
// Handle action bar actions click
return super.onOptionsItemSelected(item);
}
@Override
public boolean onPrepareOptionsMenu(Menu menu) {
// if nav drawer is opened, hide the action items
boolean drawerOpen = mDrawerLayout.isDrawerOpen(mDrawerList);
menu.findItem(R.id.action_search).setVisible(!drawerOpen);
return super.onPrepareOptionsMenu(menu);
}
@Override
public boolean onQueryTextSubmit(String query) {
Toast.makeText(this,"testing",Toast.LENGTH_SHORT).show();
return false;
}
@Override
public boolean onQueryTextChange(String newText) {
Toast.makeText(this,"testing",Toast.LENGTH_SHORT).show();
System.out.println(newText + "hello");
return false;
}
@Override
public boolean onMenuItemActionExpand(MenuItem item) {
android.util.Log.d("AppLog", "onMenuItemActionExpand");
Toast.makeText(this,"testing",Toast.LENGTH_SHORT).show();
return true;
}
@Override
public boolean onMenuItemActionCollapse(MenuItem item) {
android.util.Log.d("AppLog", "onMenuItemActionCollapse");
Toast.makeText(this,"testing",Toast.LENGTH_SHORT).show();
return true;
}
没有任何内容使用日志打印,并且没有任何内容显示Toast
我希望你能帮助我。