2017-01-06 55 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會獲得一個調用。它不完全回答我原來的問題,但對我的情況來說這是一個可以接受的解決方法。