使用IntEditTextPreference的NumberFormatException

时间:2012-12-10 13:27:51

标签: android preference

在我的Android应用程序中,我使用的是一个名为“IntEditTextPreference”的类。当我希望用户将首选项作为整数引入时,使用此类。

但它有一个问题。当用户将该字段留空并按“ok”时,将抛出NumberFormatException。

如果字段为空,我该怎么做才能避免用户按“确定”?

谢谢!

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));
   }

}

2 个答案:

答案 0 :(得分:0)

通常,如果您使用的是基于浏览器的应用程序,则在输入有效时,您将使用 JavaScript / AJAX 显示按钮。这已在客户端处理。 要避免NumberFormatException,只是在try语句周围添加catch - Integer.valueOf(value) - 块。

基本上它取决于您的客户端框架。可能有更好的框架特定解决方案。你用哪一个?

答案 1 :(得分:0)

你可能仍然有一个try / catch块来捕捉NumberFormatException。但是有很多方法可以做到这一点。一种方法是使用setClickable方法按钮false,然后当文本不为空时使用true,并使用onTextChangedListener为整数。或者你可以简单地让它可以点击,但是当点击按钮时检查空字符串或非整数,并在允许按钮执行任何其他操作之前使用警告消息toast / alert / label让用户知道他们有不正确的字段。希望这有帮助!