搜索后,操作栏不会恢复正常

时间:2015-05-11 23:51:30

标签: android android-intent searchview

我正在使用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();
    }
}

0 个答案:

没有答案