我想製作一個只能接受大寫字母,小寫字母和數字值的BasicEditField。它不應該接受任何其他符號。有沒有可用於BlackBerry BasicEditField的任何款式,使其以這種方式工作?如果不是,還有什麼我可以做的嗎?在BlackBerry上設置一個BasicEditField過濾器
回答
有一個構造函數可以讓你指定字段的樣式。然後,您可以將所需的樣式或「FILTER_UPPERCASE」組合在一起FILTER_LOWERCASE | FILTER_NUMERIC。
或者,您可以調用setFilter並創建您自己的TextFilter的子類,它允許您通過覆蓋convert和validate方法來指定所需的確切行爲。轉換允許你強制某些東西,比如自動將所有文本輸入爲大寫等。驗證允許你阻止輸入某些東西,例如特殊字符。查看API獲取更多信息。
也許這是不可能的,那樣的話,我沒有嘗試過。每當我在我的代碼中使用過濾器時,我總是以我上面提到的第二種方式完成它。這有點複雜,但可以讓您更多地控制該領域可以接受和不能接受的內容。查看TextFilter類的API文檔。正如我上面所說,你只需要實現轉換和驗證方法。我認爲在你的情況下,你不需要做任何轉換。但在驗證方法中,您只需檢查字符是否在範圍a-z A-Z或0-9中。如果它返回true,否則返回false。這將停止所有不需要的字符出現在字段中。
我用這些方法:TextFilter#get和BasicEditField#setFilter
mEdit = new EditField();
mEdit.setFilter(TextFilter.get(TextFilter.NUMERIC));
或
// Numeric filter that also allows minus sign.
mEdit.setFilter(TextFilter.get(TextFilter.INTEGER));
我想通過覆蓋TextFilter能解決更困難的任務過濾創建自己的過濾器。
對於BasicEditField,這不易實現;但是,正確的解決方案將使用AutoTextEditField更改BasicEditField。創建AutoTextEditField時,使用可以傳入參數的構造函數。這應該爲你做。
new AutoTextEditField("My label:", "initial value", 1024, 50,
TextFilter.LOWERCASE | TextFilter.NUMERIC);
-1:有關AutoTextEditField的此信息與有關BasicEditField的原始問題無關。 – 2012-11-06 05:58:28
使用BasicEditField這很容易理解,這並不容易(如果可以的話)實現;但是,正確的解決方案將使用AutoTextEditField更改BasicEditField。 因此,使用不同的字段。 – Hrvoje 2014-03-04 14:21:57
那麼,除非你編輯你的答案 - 所以我不能改變投票。 – 2014-03-05 02:42:19
mEdit.setFilter(TextFilter.get(TextFilter.NUMERIC));工作正常,而且,我認爲,它沒有減號,就像測試中不能插入「 - 」字段中的減號一樣。
庫馬爾我也面臨着同樣的問題,用下面的代碼來修復它 -
下面的腳本將允許大寫,小寫,僅數值。
setFilter(new TextFilter() {
public boolean validate(char c) {
return (Character.isDigit(c) || Character.isLowerCase(c) || Character.isUpperCase(c));
}
public char convert(char c, int status) {
return c;
}}
setFilter在這個地方不適合。 – Hrvoje 2016-12-10 21:58:14
- 1. Blackberry設備上BasicEditField中的空值
- 2. 如何在blackberry中設置basiceditfield的動畫?
- 3. Blackberry - 在BasicEditField中禁用保存選項?
- 4. 降低BlackBerry BasicEditField的高度和寬度
- 5. Blackberry - 具有LabelField行爲的BasicEditField
- 6. Blackberry - 如何將邊框添加到BasicEditField?
- 7. 如何在mysql中設置2個以上的過濾器SELECT
- 8. 過濾器相關的一組設置
- 9. 設置(過濾器)重複
- 10. 按過濾器設置FacesMessage
- 11. 如何屬性設置爲J2EE過濾器在過濾器
- 12. 怎樣一個過濾器的查詢在Django設置
- 13. 將數據輸入到BlackBerry Torch上的BasicEditField中
- 14. Android:如何設置一個過濾器到適配器和ListView
- 15. 如何設置過濾器在SQLAlchemy的
- 16. Howto - 在sharppcap中設置過濾器?
- 17. 在angularjs中動態設置過濾器
- 18. 在angularJS中設置過濾器值
- 19. 如何在一臺機器上爲BlackBerry設置多個簽名密鑰?
- 20. 無法在BlackBerry Playbook上設置音量
- 21. VBA Excel FileDialog設置/重置過濾器
- 22. AngularJS前置過濾器設置
- 23. 爲Devexpress配置一個過濾器ASPxGridView
- 24. 在分頁上重置Gridview過濾器
- 25. ag-grid:爲網格預先設置一個(默認)過濾器
- 26. 試圖設置一個A-Z過濾器
- 27. 如何設置一個filtDirectShow過濾器的輸出引腳?
- 28. 如何設置一個下拉PHP過濾器
- 29. 如何設置一個過濾器使用accepts_nested_attributes_for
- 30. 過濾另一個過濾器對象
喜戴夫,我試圖「FILTER_UPPERCASE | FILTER_LOWERCASE | FILTER_NUMERIC」這一項,但我考慮的第一個過濾器只ex.in上面的樣式烏爾給出大寫,小寫和numeric.But過濾器只只接受大寫。 – Kumar 2009-11-04 06:35:08