【问题标题】:SearchView in actionBar在 actionBar 中的 SearchView
【发布时间】:2015-10-10 23:26:46
【问题描述】:

我已按照this 代码在ActionBar 内实现SearchView(作为菜单内的一项)。

但是当我到达这条线时

mSearchView = (SearchView) menu.findItem(R.id.action_search).getActionView();

getActionView() 返回一个 null 值。

我不知道出了什么问题。

【问题讨论】:

  • 你看那些链接吗? linklinklink
  • 我查看了该链接,但没有任何改变

标签: android searchview


【解决方案1】:

试试这个..

private SearchView mSearchView;

....
....

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

            MenuItem searchItem = menu.findItem(R.id.action_search);
            mSearchView = (SearchView) searchItem.getActionView();
            setupSearchView(searchItem);

            return super.onCreateOptionsMenu(menu);
        }

        private void setupSearchView(MenuItem searchItem) {

            if (isAlwaysExpanded()) {
                mSearchView.setIconifiedByDefault(false);
            } else {
                searchItem.setShowAsActionFlags(MenuItem.SHOW_AS_ACTION_IF_ROOM
                        | MenuItem.SHOW_AS_ACTION_COLLAPSE_ACTION_VIEW);
            }

            mSearchView.setOnQueryTextListener(this);
         }

         public boolean onQueryTextChange(String newText) {

                //Query

                return false;
         }

         public boolean onQueryTextSubmit(String query) {

                //query

                return false;
         }

         public boolean onClose() {
                return false;
         }

         protected boolean isAlwaysExpanded() {
                return false;
         }

别忘了实现搜索视图...

implements SearchView.OnQueryTextListener

【讨论】:

  • 我已经尝试过你的实现,但mSearchView 仍然是null
【解决方案2】:

尝试替换

mSearchView = (SearchView) menu.findItem(R.id.action_search).getActionView();

mSearchMenuItem = menu.findItem(R.id.action_search);
mSearchView = (SearchView) MenuItemCompat.getActionView(mSearchMenuItem);

【讨论】:

  • 你是我的救星!作为记录,我必须添加一条注释:只有在菜单资源中使用 app:actionViewClass="android.support.v7.widget.SearchView" 时,您的行才有效
  • 兼容性错误通常很常见。你会习惯的。下次遇到 NullPointerException 时,请检查这是否与 AppCompat 有关。
猜你喜欢
  • 2016-01-18
  • 1970-01-01
  • 2023-04-04
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-07-14
  • 1970-01-01
相关资源
最近更新 更多