我正在使用onNewIntent()
和handleIntent()
在搜索它的活动中使用我的搜索查询,而不是启动新活动,但在搜索之后,我的活动标题不会返回。相反,有一个带有后退按钮的图标,旁边有一个搜索图标,而不是一直到它应该的位置。当我按下后退按钮时,它会回到应有的状态。我已尝试使用onBackPressed()
来模拟此次按下,但它也会关闭原始活动。我不确定为什么会这样,我的搜索活动是否因某种原因而熬夜?
以下是我主要活动中的相关代码:
@Override
public boolean onCreateOptionsMenu(Menu menu) {
getMenuInflater().inflate(R.menu.add, menu);
SearchManager searchManager = (SearchManager) getSystemService(Context.SEARCH_SERVICE);
searchView = (SearchView) menu.findItem(R.id.action_search)
.getActionView();
ComponentName cn = new ComponentName(this, SearchActivity.class);
searchView.setSearchableInfo(searchManager.getSearchableInfo(cn));
searchView.setIconifiedByDefault(false);
searchView.setOnQueryTextFocusChangeListener(new View.OnFocusChangeListener() {
@Override
public void onFocusChange(View view, boolean queryTextFocused) {
if(!queryTextFocused) {
searchView.onActionViewCollapsed();
searchView.setQuery("", false);
}
}
});
return true;
}
@Override
public void startActivity(Intent intent) {
// check if search intent
if (Intent.ACTION_SEARCH.equals(intent.getAction())) {
onNewIntent(intent);
} else {
super.startActivity(intent);
}
}
@Override
protected void onNewIntent(Intent intent) {
intent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
setIntent(intent);
handleIntent(intent);
}
private void handleIntent(Intent intent) {
if (Intent.ACTION_SEARCH.equals(intent.getAction())) {
String query = intent.getStringExtra(SearchManager.QUERY);
search(query);//this is my own method, performs search opeations
searchView.onActionViewCollapsed();
}
}