0

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

但它有一个问题。当用户将该字段留空并按“确定”时,将引发 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));
   }

}

4

2 回答 2

0

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

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

于 2012-12-10T13:37:30.830 回答
0

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

于 2012-12-10T16:11:32.297 回答