2014-03-13 86 views
1

我在ActionBar中有一個SearchView。在SearchView中驗證文本輸入

我想驗證用戶輸入的文本,然後將其提交給SearchManager。

我的意思是,如果用戶輸入的文本少於3個字符,則會彈出Toast,而不是轉到顯示搜索結果的其他活動。

這裏是我如何實現搜索查看:

MainActivity

@Override 
public boolean onCreateOptionsMenu(Menu menu) { 
    MenuInflater inflater = getMenuInflater(); 
    inflater.inflate(R.menu.search, menu); 

    SearchManager searchManager = (SearchManager) getSystemService(Context.SEARCH_SERVICE); 
    SearchView searchView = (SearchView) menu.findItem(R.id.menu_search).getActionView(); 
    searchView.setSearchableInfo(searchManager.getSearchableInfo(getComponentName())); 

    SearchView.OnQueryTextListener queryTextListener = new SearchView.OnQueryTextListener() { 
     @Override 
     public boolean onQueryTextSubmit(String s) { 
      Log.d(TAG, "submit= "+s); 
      if (s.length() < 4) Toast.makeText(getApplicationContext(), "More than 3 letter pl0x", Toast.LENGTH_LONG).show(); 
      return true; 
     } 

     @Override 
     public boolean onQueryTextChange(String s) { 
      return true; 
     } 
    }; 
    searchView.setOnQueryTextListener(queryTextListener); 

    return super.onCreateOptionsMenu(menu); 
} 

我只是想確保用戶輸入大於3個字符。有沒有可能的方法來做到這一點?

回答

3

從文檔:「監聽器可以通過返回true,表示已經處理了提交申請覆蓋標準的行爲,否則返回false到。讓SearchView通過啓動任何關聯的意圖來處理提交。「

if (s.length() < 4) { 
    Toast.makeText(getApplicationContext(), "More than 3 letter pl0x", Toast.LENGTH_LONG).show(); 
    return true; 
} else { 
    return false; 
} 
+0

感謝它的工作:) – AimanB

1

這裏有一個來自zasadnyy的圖書館。
點擊這裏https://github.com/zasadnyy/z-validations

我下載了該庫,並添加了類「HasMinimumLength」。這樣,您可以檢查文本的長度是否比提供的最小字符長度長。

請注意,您需要將strings.xml中的字符串複製到您自己的字符串中,並且您必須切換導入。這意味着,在驗證類,而不是

import ua.org.zasadnyy.zvalidations.R你應該使用import your.package.name.R

+0

謝謝我以後再看看:) – AimanB