2015-06-28 2 views
0

Я читал официальный сайт Android, но все еще запутался. Могу ли я спросить, являются ли действия, доступные для поиска, и доступным для поиска интерфейсом два разных вида деятельности? Мое понимание - это новое намерение для активности интерфейса поиска, а затем передать запрос на операцию поиска. Поиск с возможностью поиска завершает поиск и возвращает адаптер (в обычном случае) к активности интерфейса поиска с помощью другого намерения?Панель поиска в ОС Android

Верно ли это?

С веб-сайта есть этот фрагмент:

@Override 
public boolean onCreateOptionsMenu(Menu menu) { 
    // Inflate the options menu from XML 
    MenuInflater inflater = getMenuInflater(); 
    inflater.inflate(R.menu.options_menu, menu); 

    // Get the SearchView and set the searchable configuration 
    SearchManager searchManager = (SearchManager) getSystemService(Context.SEARCH_SERVICE); 
    SearchView searchView = (SearchView) menu.findItem(R.id.menu_search).getActionView(); 
    // Assumes current activity is the searchable activity 
    searchView.setSearchableInfo(searchManager.getSearchableInfo(getComponentName())); 
    searchView.setIconifiedByDefault(false); // Do not iconify the widget; expand it by default 

    return true; 
} 

это не должно быть на поисковой активности интерфейса? Но почему есть комментарий выше двух линий:

// Assumes current activity is the searchable activity 
     searchView.setSearchableInfo(searchManager.getSearchableInfo(getComponentName())); 
     searchView.setIconifiedByDefault(false); // Do not iconify the widget; expand it by default 

говоря // Assumes current activity is the searchable activity?

Просьба пояснить. Большое спасибо.

ответ

0

Строка «Предположим, что текущая деятельность является поисковой деятельностью» относится к выражению getComponentName() (которое возвращает имя компонента текущей деятельности при вызове из нее).

Могу ли я спросить, является ли доступная для поиска деятельность и интерфейс для поиска двумя различными видами деятельности?

Вы можете сделать любой способ.

Поиск обычно происходит в уже отображаемом содержимом, поэтому может быть удобно кодировать фильтрацию результатов в той же Деятельности, которая содержит SearchView. Будет создан и запущен новый экземпляр того же Activity, каждый раз, когда пользователь будет искать, и предыдущий экземпляр может быть возвращен, нажав BACK. Излишне говорить, что для этой работы для соответствующей работы должен быть подходящий launchMode (такой как стандарт по умолчанию).

Если вы передаете ComponentName другой деятельности в getSearchableInfo так:

ComponentName searchResultActivity = new ComponentName(getPackageName(), ViewerActivity.class.getName()); 
searchView.setSearchableInfo(searchManager.getSearchableInfo(searchResultActivity)); 

затем будет использоваться <meta-data> тег в ViewerActivity и активность будут получать результаты поиска Intent вместо этого.

Смежные вопросы