2012-09-12 74 views
0

我有輸入負INT到我的EditText一個問題,當我這樣做,我得到一個錯誤09-12 06:26:42.025: E/AndroidRuntime(18247): java.lang.NumberFormatException: Invalid int: "-" XML文件:的EditText與負數和TextWatcher

<EditText 
     android:id="@+id/downAndDistanceStarting" 
     android:layout_width="180dp" 
     android:layout_height="match_parent" 
     android:ems="10" 
     android:inputType="numberSigned" 
     android:selectAllOnFocus="true" 
     android:textSize="@dimen/enterText" > 

java代碼:

end = (EditText) findViewById(R.id.downAndDistanceEnding); 
public void afterTextChanged(Editable s) { 
int w = Integer.parseInt(end.getText().toString()); 
} 

我假設我的textWatcher存在問題,並且在每次鍵入「press」後都會「發送」我的輸入,所以當我嘗試輸入-12時,它會發送「 - 」作爲「parsening」,然後才能設置完成,這就是爲什麼我的應用程序崩潰了,我是對的嗎?任何人都知道如何解決它?

回答

0

是的你是對的。將代碼包裝在try/catch塊中,然後,當收到時它會拋出NumberFormatException並且會被捕獲。

try 
{ 
int w = Integer.parseInt(end.getText().toString()); 
}catch(NumberFormatException e) 
{ 

} 
0

我面臨同樣的問題。在解析之前,我會提供一個if條件。像這樣,所以直到你輸入第二個數字,它不會解析。

end = (EditText) findViewById(R.id.downAndDistanceEnding); 
public void afterTextChanged(Editable s) { 
    if(!end.getText().toString().equals("-")); 
    { 
    int w = Integer.parseInt(end.getText().toString()); 
    } else { //do something } 
}