2013-02-08 4 views
1

ActionBarSherlock SearchView를 시도하고 있습니다. 불행히도Sherlock으로 검색 ActionBar SearchView setOnKeyListener

 public boolean onKey(View arg0, int arg1, KeyEvent event) 

은 실행되지 않습니다. 그 이유를 알고 계십니까? 이 게시물에서 알 수 있습니다. SearchView imeOptions and onQueryTextSubmit support 사용자가 다른 방법으로 문제를 해결했다는 것을 알 수 있습니다. 어쩌면 내가 똑같이해야 할까? 이런 일을하고

@Override 
public boolean onCreateOptionsMenu(Menu menu) { 
    //Used to put dark icons on light action bar 
    boolean isLight = SampleList.THEME == R.style.Theme_Sherlock_Light; 

    //Create the search view 
    final SearchView searchView = new SearchView(getSupportActionBar().getThemedContext()); 
    searchView.setQueryHint("Search for countries…"); 

    System.out.println("searchView.getQuery()"+searchView.getQuery()); 

    searchView.setOnKeyListener(new OnKeyListener() 
    { 
    /** 
     * This listens for the user to press the enter button on 
     * the keyboard and then hides the virtual keyboard 
     */ 
      @Override 
     public boolean onKey(View arg0, int arg1, KeyEvent event) { 
     // If the event is a key-down event on the "enter" button 

       System.out.println("--->"+searchView.getQuery()); 
     if ((event.getAction() == KeyEvent.ACTION_DOWN) && 
     (arg1 == KeyEvent.KEYCODE_ENTER)) 
     { 
     InputMethodManager imm = (InputMethodManager)  SearchViews.this.getSystemService(SearchViews.INPUT_METHOD_SERVICE); 
     imm.hideSoftInputFromWindow(searchView.getWindowToken(), 0); 
     return true; 
     } 
     return false; 
     } 



    }); 

    menu.add("Search") 
     .setIcon(isLight ? R.drawable.ic_search_inverse : R.drawable.abs__ic_search) 
     .setActionView(searchView) 
     .setShowAsAction(MenuItem.SHOW_AS_ACTION_IF_ROOM | MenuItem.SHOW_AS_ACTION_COLLAPSE_ACTION_VIEW); 

    return true; 
} 
+0

읽을 수 있습니다. 해결책을 얻었습니까? – faizal

답변

6

피하십시오 :

덕분에 여기

내 코드입니다. SearchView.OnQueryTextListener

final SearchView searchView = new SearchView(getSupportActionBar().getThemedContext()); 
searchView.setQueryHint("Search for countries.."); 
searchView.setOnQueryTextListener(new SearchView.OnQueryTextListener() { 

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


    @Override 
    public boolean onQueryTextSubmit(String query) { 
     if (query.length() != 0) { 
      System.out.println("--->" + query); 
      // handle search here 
      return true; 
     } 
     return false; 
    } 
}); 

항상 내가 같은 문제가 the docs

+0

좋은 대답입니다.이 방법이 좋습니다. 하지만 내 질문에 봐이 OnQueryTextListener 현재 몇 가지 문제가 있어요. –

관련 문제