請閱讀我的問題描述。我沒有找到正確的方式來問這個問題。但描述會向你解釋我的問題。
好的,我有一個EditText,我希望當用戶在 中輸入一個大于 500 的數字時EditText,一個drawable(勾號)應該是可見的(表明輸入的數字是正確的)。輸入數字后,假設用戶退格并洗掉輸入的數字(使數字小于500),drawable 應該是 invisible 。
我已經這樣做了,Textwatcher但問題是當用戶開始洗掉輸入的號碼時,我收到錯誤并且應用程式崩潰。示例 - 如果我輸入 500 ... 一切正常,drawable 也是可見的。現在我洗掉了 500 的 1 個零,現在 editext 的值是 50 并且 drawable 也是不可見的。現在我洗掉了另一個 0,edittext 現在的值為 5。到這里一切正常。現在,當我洗掉5,應用程式崩潰并給出錯誤。請有人告訴我我在這里做錯了什么?
活動截圖... edittext 截圖
這就是我在做什么..
ets2.addTextChangedListener(new TextWatcher() {
@Override
public void beforeTextChanged(CharSequence charSequence, int i, int i1, int i2) {
}
@Override
public void onTextChanged(CharSequence charSequence, int i, int i1, int i2) {
if((Long.parseLong(ets2.getText().toString().trim())<500) || (ets2.length()==0) /*||(TextUtils.isEmpty(ets2.getText().toString()))*/){
step2tv.setCompoundDrawablesWithIntrinsicBounds(0, 0, 0, 0);
invalidtv.setVisibility(View.VISIBLE);
ets2.setError("Please enter amount \n greator than 500");
} else{
step2tv.setCompoundDrawablesWithIntrinsicBounds(0, 0,R.drawable.ic_checkgreen, 0);
}
}
@Override
public void afterTextChanged(Editable editable) {
}
});
uj5u.com熱心網友回復:
首先,每當您發生崩潰時,發布堆疊跟蹤。它告訴你它為什么會崩潰。
在這里,很容易猜到。當字串為空時,parseLong 會拋出例外,因為 "" 無法決議為 long。解決這個問題的方法是捕獲 NumberFormatException 并將其視為失敗。
轉載請註明出處,本文鏈接:https://www.uj5u.com/ruanti/339550.html
