2017-01-06 2 views
1

Мое приложение содержит стандартный виджет SearchView. Как видно из приведенного ниже кода, я устанавливаю OnClickListener, OnCloseListener и OnQueryTextListener.SearchView не отвечает на клики после запроса submit

Если я коснусь SearchView, он изначально отвечает как ожидалось. Если я нахожу текст и нажимаю кнопку поиска на клавиатуре, OnQueryTextListener срабатывает правильно, а клавиатура отклоняется в соответствии с searchView.setIconified (true). Однако, если я снова коснусь SearchView, OnClickListener не будет запущен. Клавиатура все еще появляется, и поле становится редактируемым, но мой код в OnClickListener не выполняется.

Если я использую значок «X», чтобы закрыть окно поиска после этого, все возвращается в нормальное состояние. В следующий раз, когда я нажимаю на SearchView, мой слушатель уволен.

У меня есть дополнительный код, который мне нужно будет выполнять каждый раз, когда нажимается SearchView.

Что может вызвать у слушателя не срабатывание в этом конкретном случае? Есть ли что-то еще, что я должен делать в OnQueryTextSubmit?

searchView.setOnClickListener(new View.OnClickListener() { 
     @Override 
     public void onClick(View v) { 
      filterLayout.setVisibility(View.VISIBLE); 
      searchView.setIconified(false); 
      System.out.println("on click"); 
     } 
    }); 


    searchView.setOnCloseListener(new SearchView.OnCloseListener() { 
     @Override 
     public boolean onClose() { 
      filterLayout.setVisibility(View.INVISIBLE); 

      return false; 
     } 
    }); 

    searchView.setOnQueryTextListener(new SearchView.OnQueryTextListener() { 
     @Override 
     public boolean onQueryTextSubmit(String query) { 

      searchView.setIconified(true); 

      return false; 
     } 

     @Override 
     public boolean onQueryTextChange(String newText) { 
      return false; 
     } 
    }); 

ответ

1

Я нашел половину ответа на эту проблему. Если я очищу фокус поискового запроса при отправке запроса, тогда, когда пользователь в следующий раз коснется searchView, OnQueryTextFocusChangeListener получит вызов. Это не совсем соответствует моему первоначальному вопросу, но это приемлемое решение для моего дела.

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