SearchView主题更改

时间:2015-05-16 14:24:08

标签: java android android-activity searchview

我的搜索视图出现问题。

我有两个主题,当我第一次触摸searchview时,我得到了丑陋的第一张照片。但是当我再次进入searchview时,我从2张图片中获得了很好的主题。

我想永远得到第二种方式...... 任何线索为什么会发生这种情况?

以下是我的搜索视图初始化代码:

private void setupSearchView(MenuItem searchItem) {
    searchItem.setShowAsActionFlags(MenuItem.SHOW_AS_ACTION_IF_ROOM
            | MenuItem.SHOW_AS_ACTION_COLLAPSE_ACTION_VIEW);
}

@Override
public boolean onCreateOptionsMenu(Menu menu) {
    // Inflate the menu; this adds items to the action bar if it is present.
    MenuInflater inflater = getMenuInflater();
    inflater.inflate(R.menu.menu_main, menu);

    MenuItem searchItem = menu.findItem(R.id.action_search);
    mSearchView = (SearchView) searchItem.getActionView();
    setupSearchView(searchItem);
    mSearchView.setOnQueryTextListener(new SearchView.OnQueryTextListener() {
        @Override
        public boolean onQueryTextSubmit(String s) {
            startSearch(null,true,null,false);
            return false;
        }

        @Override
        public boolean onQueryTextChange(String s) {
            return false;
        }
    });

    SearchManager searchManager = (SearchManager) getSystemService(Context.SEARCH_SERVICE);
    mSearchView.setSearchableInfo(searchManager.getSearchableInfo(getComponentName()));

    return true;
}

谢谢!

enter image description here enter image description here

修改

在@huangming的帮助下,我编辑了我的代码。现在它就像一个魅力:)

@Override
public boolean onOptionsItemSelected(MenuItem item) {
    switch (item.getItemId) {
        case R.id.search:
            onSearchRequested();
            return true;
        default:
            return super.onOptionsItemSelected(item);
    }
}

在我的onCreateOptionsMenu(菜单菜单)中 我必须编辑,因为我想在Bundle中发送自定义值以供我的SearchActivity进行管理。

final SearchManager searchManager = (SearchManager) getSystemService(Context.SEARCH_SERVICE);
        MenuItem searchItem = menu.findItem(R.id.action_search);
        //mSearchView = (SearchView) searchItem.getActionView();
        mSearchView = (SearchView) MenuItemCompat.getActionView(searchItem);
        mSearchView.setSearchableInfo(searchManager.getSearchableInfo(getComponentName()));

        setupSearchView(searchItem);
        mSearchView.setOnQueryTextListener(new SearchView.OnQueryTextListener() {
            @Override
            public boolean onQueryTextSubmit(String s) {
                Bundle b = new Bundle();
                final SharedPreferences prefs = getSharedPreferences("pref", Context.MODE_PRIVATE);
                int somevalue = prefs.getInt("value", 0);
                b.putInt("value", somevalue);
                searchManager.startSearch("", true, searchManager.getGlobalSearchActivity(), b, false);
                return false;
            }

            @Override
            public boolean onQueryTextChange(String s) {
                return false;
            }
        });

1 个答案:

答案 0 :(得分:1)

您有以下代码吗? 尝试删除代码onSearchRequested();

@Override
public boolean onOptionsItemSelected(MenuItem item) {
    switch (item.getItemId) {
        case R.id.search:
            onSearchRequested();
            return true;
        default:
            return super.onOptionsItemSelected(item);
    }
}