4

アクションバーに がありSearchView、送信ボタンをクリックすると問題が発生します。つまり、検索を開始したアクティビティに戻ると、クエリが送信され、結果が表示されます。展開されたものから、SearchViewどうすれば閉じることができるか、つまり送信時にアイコン化することができるかという私の質問です。これは私のコードです。

searchView = (SearchView) item.getActionView();
            SearchManager searchManager = (SearchManager) getSystemService(Context.SEARCH_SERVICE);
            searchView.setSearchableInfo(searchManager
                    .getSearchableInfo(getComponentName()));
            searchView.setIconifiedByDefault(true);
            searchView.setIconified(true);
            searchView.setQueryRefinementEnabled(true);
            searchView
                    .setOnQueryTextListener(new SearchView.OnQueryTextListener() {

                        @Override
                        public boolean onQueryTextSubmit(String query) {
                            try {
                                  searchView = (SearchView) item.getActionView();
        SearchManager searchManager = (SearchManager) getSystemService(Context.SEARCH_SERVICE);
        searchView.setSearchableInfo(searchManager
                .getSearchableInfo(getComponentName()));
        searchView.setIconifiedByDefault(true);
        searchView.setIconified(true);
        searchView.setQueryRefinementEnabled(true);
        searchView
                .setOnQueryTextListener(new SearchView.OnQueryTextListener() {

                    @Override
                    public boolean onQueryTextSubmit(String query) {
                        try {

                        } catch (Exception ex) {
                            ex.printStackTrace();
                        }
                        return false;
                    }

                    @Override
                    public boolean onQueryTextChange(String newText) {
                        // TODO Auto-generated method stub
                        return false;
                    }
                }); // doesnot work 
                            } catch (Exception ex) {
                                ex.printStackTrace();
                            }
                            return false;
                        }

                        @Override
                        public boolean onQueryTextChange(String newText) {
                            // TODO Auto-generated method stub
                            return false;
                        }
                    });
4

3 に答える 3

2

API> = 14の場合、を使用できますitem.collapseActionView()

于 2013-02-06T15:27:21.040 に答える
2

このソリューションは機能します:

@Override
    public boolean onCreateOptionsMenu(Menu menu) {
        getSupportMenuInflater().inflate(R.menu.home_screen, menu);

        SearchManager searchManager = (SearchManager) getSystemService(Context.SEARCH_SERVICE);
        final MenuItem searchMenuItem = menu.findItem(R.id.menu_search);
        final SearchView searchView = (SearchView) searchMenuItem
                .getActionView();
        searchView.setIconifiedByDefault(false);
        if (searchManager != null && searchView != null) {
            searchView.setSearchableInfo(searchManager
                    .getSearchableInfo(getComponentName()));

            searchView
                    .setOnQueryTextFocusChangeListener(new View.OnFocusChangeListener() {

                        @Override
                        public void onFocusChange(View v, boolean hasFocus) {

                            if (!hasFocus) {
                                if (searchMenuItem != null) {
                                    searchMenuItem.collapseActionView();
                                }// end if
                                if (searchView != null) {
                                    searchView.setQuery("", false);

                                }// end if
                            }// end if

                        }
                    });

            searchView
                    .setOnQueryTextListener(new SearchView.OnQueryTextListener() {

                        @Override
                        public boolean onQueryTextSubmit(String query) {
                            /**
                             * hides and then unhides search tab to make sure
                             * keyboard disappears when query is submitted
                             */
                            if (searchView != null) {
                                searchView.setVisibility(View.INVISIBLE);
                                searchView.setVisibility(View.VISIBLE);

                            }
                            return false;
                        }

                        @Override
                        public boolean onQueryTextChange(String newText) {
                            // TODO Auto-generated method stub
                            return false;
                        }
                    });

        }

        return super.onCreateOptionsMenu(menu);
    }
于 2013-10-06T18:03:13.687 に答える
0

これを別の質問から取ったところ、うまくいくようでした。

 @Override
 public void onStart()
 {
   if (mSearchView != null)
   {

       getSearchMenuItem().collapseActionView();
   }
 }
 @Override
public boolean onCreateOptionsMenu(Menu menu)
{
  //get your search view
  msearchMenuItem = menu.findItem(R.id.search);
}
public MenuItem getSearchMenuItem() {
             return msearchMenuItem;
}

戻るボタンを押すたびに検索ビューを閉じます(これにより、アクティビティが onStart() に入ります)

于 2013-07-23T13:42:40.963 に答える