2012-12-10 150 views
0

在我的Android應用程序,我使用了一個名爲「IntEditTextPreference」類。當我希望用戶將首選項作爲整數引入時,將使用此類。NumberFormatException異常與IntEditTextPreference

但它有一個問題。當用戶將該字段留空並按下「ok」時,會引發NumberFormatException。

什麼我可以做,以避免用戶按「OK」時,該字段爲空?

謝謝!

public class IntEditTextPreference extends EditTextPreference 
{ 

    public IntEditTextPreference(Context context) 
    { 
      super(context); 
    } 

    public IntEditTextPreference(Context context, AttributeSet attrs) 
    { 
     super(context, attrs); 
    } 

    public IntEditTextPreference(Context context, AttributeSet attrs, int defStyle) 
    { 
     super(context, attrs, defStyle); 
    } 

    @Override 
    protected String getPersistedString(String defaultReturnValue) 
    { 
     return String.valueOf(getPersistedInt(-1)); 
    } 

    @Override 
    protected boolean persistString(String value) 
    { 
     return persistInt(Integer.valueOf(value)); 
    } 

}

+0

使用默認值 – CocoNess

+0

哪裏是persistInt方法? –

回答

0

你可能應該還有一個try/catch塊來捕捉NumberFormatException。但是有很多方法可以做到這一點。一種方法是,您可以使用setClickable方法的按鈕到false,然後在文本不爲空時爲true,並且使用onTextChangedListener爲整數。或者,您可以簡單地讓它成爲可點擊的,但在點擊按鈕時檢查空字符串或非整數,並在允許按鈕執行任何操作之前使用警告消息toast/alert/label讓用戶知道他們有不正確的字段。希望這可以幫助!

+0

謝謝!我已經完成了。在EditTextPreference的構造函數中,我創建了一個EditTextWatcher並將其關聯到首選項getEditText()。addTextChangedListener(watcher)''的EditText。然後,在觀察者內部,我檢查該字段是否爲空,並根據它來禁用o啓用按鈕。 – Eduardo

+0

不客氣,我很高興你的工作。如果您接受答案,對於有同樣問題的其他人找到答案會更容易 – codeMagic

0

一般來說,如果您使用的是基於瀏覽器的應用程序,你可以使用JavaScript的/AJAX當輸入有效顯示一個按鈕。這已經在客戶端處理了。 爲了避免NumberFormatException,只需添加一個try - 圍繞Integer.valueOf(value)聲明catch - 塊。

基本上,它取決於你的客戶端框架。可能有更好的框架特定解決方案。你使用哪一個?

+0

我正在使用android – Eduardo

+0

Doh ...這將解釋Android標記。 Sry目前深入基於Web的開發人員,並沒有意識到可能有不同。 – Wintermute

相關問題