2015-01-14 17 views
5

Tôi có một SearchView trong một Hoạt động; khi người dùng thực hiện tìm kiếm, một số Fragment chứa kết quả tìm kiếm sẽ được thêm vào cùng một Hoạt động.Android SearchView OnFocusChangeListener: onFocusChange không được gọi ở tất cả

Bây giờ điều tôi muốn là khi nhấp vào SearchView (để lấy tiêu điểm và người dùng ở đó), số Fragment đã được hiển thị (chứa kết quả tìm kiếm) sẽ bị mờ/mờ.

Vì vậy, tôi đã cố gắng để thiết lập một OnFocusChangedListener cho SearchView trong onActivityCreated cuộc sống phương pháp chu kỳ callback của Fragment, nhưng nó dường như không được gọi là gì cả.

final Activity myActivity = getActivity(); 
     Log.i(TAG, "myActivity>"+myActivity.toString());//check 
     SearchView mySearchView = (SearchView) myActivity.findViewById(R.id.searchActivity_searchView); 
     Log.i(TAG, "mySearchView>"+mySearchView.toString());//check 
     mySearchView.setOnFocusChangeListener(new OnFocusChangeListener() { 
      @SuppressLint("NewApi") 
      @Override 
      public void onFocusChange(View v, boolean hasFocus) { 
       Log.i(TAG, "onFocusChange OF OnFocusChangeListener IN SearchResultsFragment CALLED."); 
       if (hasFocus) { 
        myActivity.getWindow().setDimAmount(1.0f); 
       } 
      } 
     }); 

Vì vậy, tôi thiếu gì đó? Tôi nên làm gì để có được số onFocusChanged được gọi khi người dùng nhấp chuột và do đó kích hoạt SearchView để nhập truy vấn Tìm kiếm của họ vào đó?

Lưu ý: Nếu cần có toàn bộ mã SSCCE, vui lòng hỏi ý kiến, tôi sẽ đăng.

+0

Tại sao bạn không thử dùng setOnClickListener()? – MohanRaj

+0

@MohanRaj Chỉ cần thử rằng, ngay cả khi đó không được gọi là = ( – Solace

+0

Bạn có thể trực tiếp thử điều này trong hoạt động giữ chế độ xem tìm kiếm của bạn, thay vì nhận tham chiếu bên trong đoạn? – MohanRaj

Trả lời

20

Xin lỗi vì câu trả lời trễ, nhưng tôi đã gặp phải vấn đề tương tự và tìm thấy câu hỏi này trong quá trình tìm kiếm, vì vậy có thể giúp người khác.

Bạn đã thử sử dụng mySearchView.setOnQueryTextFocusChangeListener() thay vì mySearchView.setOnFocusChangeListener()?

Làm việc cho tôi.

+0

Tôi sẽ phải thử nó. Tôi sẽ liên lạc lại với bạn sau đó. – Solace

+0

Cảm ơn bạn, nó đã hoạt động –

+0

Cảm ơn, nó đã hoạt động! –

Các vấn đề liên quan