2017-01-06 3 views
1

私のアプリには標準のSearchViewウィジェットが含まれています。下のコードからわかるように、私はOnClickListener、OnCloseListener、およびOnQueryTextListenerを設定しています。クエリの送信後にSearchViewがクリックに反応しない

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のフォーカスをクリアすると、次にユーザーがsearchViewをタップするとOnQueryTextFocusChangeListenerが呼び出しを取得します。それは私の元の質問に正確に答えるものではありませんが、私の場合には許容できる回避策です。

関連する問題