Пройдите поисковый запрос ActionBar к фрагменту

Здесь видно, что у меня есть SHERLOCK FRAGMENT ACTIVITY которая содержит четыре FRAGMENTS и SEARCH VIEW . Есть 4 фрагмента, в которых последним является FRAGMENT SEARCH RESULTS

Мой вопрос заключается в том, как передавать данные поискового запроса в FRAGMENT SEARCH RESULTS из поиска и отображать результат поиска в FRAGMENT SEARCH RESULTS

Я реализовал это

 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 onClose() { return false; } protected boolean isAlwaysExpanded() { return false; } @Override public boolean onQueryTextSubmit(String query) { if (query.length() > 0) { **//WHAT SHOULD I WRITE HERE** } return false; } @Override public boolean onQueryTextChange(String newText) { return false; } 

Хороший пример здесь action-bar-search-view .

Чтобы отобразить результат поиска, вам необходимо передать submitYourQuery(query); И верните true при успешном поиске.

Процесс хранения и поиска ваших данных уникален для вашего приложения. Вы можете хранить и искать свои данные разными способами. Хранение и поиск ваших данных – это то, что вам следует тщательно учитывать с точки зрения ваших потребностей и формата данных.

Получите более подробную информацию из документации android ReceivingTheQuery

 @Override public boolean onQueryTextSubmit(String query) { if (query.length() > 0) { FragmentTransaction transaction = getSupportFragmentManager().beginTransaction(); Fragment newFragment = new SearchFragment(); //your search fragment Bundle args = new Bundle(); args.putString("query_string", query); newFragment.setArguments(args); transaction.replace(R.id.content_frame, newFragment); transaction.addToBackStack(null); transaction.commit(); } return false; } 

Я нашел обходное решение, которое вы можете переопределить этот метод (startActivity (Intent)) в своей BaseActivity, а затем проверить, является ли действие ACTION_SEARCH, а затем выполнить специальную работу

 @Override public void startActivity(Intent intent) { try { if (intent.getAction().equals(Intent.ACTION_SEARCH)) // Do ur job here start fragment for Example return; } catch (Exception e) { } super.startActivity(intent); } 
Intereting Posts
Я забыл свой пароль к хранилищу ключей, и я хочу установить apk в Google Play. Что я делаю? Как реализовать значения элементов setMultiChoiceItems в onPrepareDialog? Импортировать модуль для градиентного проекта на андроид-студии 0.4.0v Android MediaPlayer.OnBufferingUpdateListener – Процент буферизованного содержимого отрицательный Публикация частного приложения Android для нескольких клиентов Тестирование кода Android с помощью JUnit и JDK Добавление проекта android для git Android getExternalStorageDirectory () возвращает недопустимый каталог Добавление графического фрейма или водяного знака для видео в Android программно Как получить обнаруженный штрих-код / ​​QR автоматически INSTALL_FAILED_MISSING_SHARED_LIBRARY поддержка андроидного эмулятора Проблема в OnTouchListener для ImageView Как добавить нашу собственную Системную службу в Android Framework? Чтение информации о кредитной карте PayWave через NFC на Android Как предотвратить метод onClick на прозрачной части загруженного PNG ImageView