【问题标题】:SearchView theme changing搜索视图主题更改
【发布时间】:2015-05-16 14:24:08
【问题描述】:

我的搜索视图有问题。

我有 2 个主题,当我第一次接触 searchview 时,我得到了丑陋的第一张图片。但是当我再次进入 searchview 时,我从 2 pic 中得到了不错的主题。

我想总是选择第二种方式... 任何线索为什么会发生这种情况?

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

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;
}

谢谢!

编辑

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

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

在我的 onCreateOptionsMenu(Menu menu) 我必须进行编辑,因为我想在 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;
            }
        });

【问题讨论】:

    标签: java android android-activity searchview


    【解决方案1】:

    你有下面的代码吗? 尝试删除代码onSearchRequested();

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

    【讨论】:

      猜你喜欢
      • 2021-05-04
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多