出现问题的代码:
public class MySearchableActivity extends Activity implements SearchView.OnQueryTextListener, SearchView.OnCloseListener {
private SearchView mSearchView;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_my_searchable);
mSearchView = (SearchView) findViewById(R.id.search_view);
mSearchView.setIconifiedByDefault(false);
mSearchView.setOnQueryTextListener(this);
mSearchView.setOnCloseListener(this);
SearchManager searchManager = (SearchManager) getSystemService(Context.SEARCH_SERVICE);
mSearchView.setSearchableInfo(searchManager.getSearchableInfo(getComponentName()));
}
@Override
public boolean onQueryTextSubmit(String query) {
// TODO Auto-generated method stub
return false;
}
@Override
public boolean onQueryTextChange(String newText) {
// TODO Auto-generated method stub
return false;
}
@Override
public boolean onClose() {
Intent intent = new Intent();
intent.setClass(MySearchableActivity.this, MainActivity.class);
startActivity(intent);
return false;
}
}
问题出在onClose方法中启动Activity的操作失败了,解决方法是使用OnCancelListener接口来启动Activity。代码如下:
public class MySearchableActivity extends Activity implements SearchView.OnQueryTextListener, SearchView.OnCloseListener, SearchView.OnSuggestionListener, SearchManager.OnCancelListener {
private SearchView mSearchView;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_my_searchable);
mSearchView = (SearchView) findViewById(R.id.search_view);
mSearchView.setIconifiedByDefault(false);
mSearchView.setOnQueryTextListener(this);
mSearchView.setOnCloseListener(this);
mSearchView.setOnSuggestionListener(this);
SearchManager searchManager = (SearchManager) getSystemService(Context.SEARCH_SERVICE);
searchManager.setOnCancelListener(this);
mSearchView.setSearchableInfo(searchManager.getSearchableInfo(getComponentName()));
}
@Override
public boolean onQueryTextSubmit(String query) {
// TODO Auto-generated method stub