【问题标题】:Android NumberFormatException error with a simple number input from EditText来自 EditText 的简单数字输入的 Android NumberFormatException 错误
【发布时间】:2011-12-20 01:07:07
【问题描述】:

所以我有一个带有数字输入的简单编辑文本。 用户输入他的电话号码,显然这就是目标。 现在每次我都这样做

int contactNumber=Integer.parseInt(mContactNumber.getText().toString());

我收到一个错误,说 NumberFormatException 出于某种原因它不喜欢一串数字。我已确保 android 输入字段中的 mContactNumber 字段具有

android:input="number"

现在我也尝试确定

int contactNumber=Integer.parseInt(mContactNumber.getText().toString().trim());

还是一样的错误

各位有什么想法吗?

【问题讨论】:

  • mContactNumber 中的内容是整数吗?
  • db 中的字段是 int 还是 string 的联系电话号码?
  • 伙计们,我已经有了。我所有失败的测试看起来像...... 11-01 23:05:45.634: ERROR/AndroidRuntime(1148): java.lang.NumberFormatException: 无法将'7777777778'解析为整数,显然不是空的
  • 您输入的数字超出了 int 类型的限制,我认为这就是它给出 NumberFormatException 的原因。正如我回答的那样,将您的类型转换为长,我想这对您有用.....

标签: android integer android-edittext parseint


【解决方案1】:

尝试将类型设置为“long”而不是“int”。希望这对你有用。

【讨论】:

  • 当我将 EditText 的 android:input 类型设置为数字时,为什么它在 Long.parseLong 而不是 int 中起作用是没有意义的。但是哦,好吧
  • 嗯,可能发生了两件事。一,您输入的数字超出了int类型的范围,并且在long类型的范围内,所以它作为u cast type to long。否则,您的输入数字在内部被提升为 long ,但由于您已将其转换为 int 类型,因此引发了异常。无论如何,它对你有用,这很棒。考虑到我的两点,如果您愿意,可以在互联网上进一步搜索该问题。最后,如果答案已经解决了您的问题,请接受答案,以便对遇到相同问题的其他人有所帮助。谢谢.....
【解决方案2】:

对于电话号码,您不能将其视为整数。尝试仅将其作为字符串,在获取该字符串后,您可以仅通过

来检查数字
TextUtils.isDigitsOnly(str);

【讨论】:

  • 虽然一般来说你是对的,最好将数字保存在字符串中,因为甚至稍后我可以以字符串的形式进行检查,例如 String incommingNumber = b.getString(TelephonyManager.EXTRA_INCOMING_NUMBER);除非我之前知道
  • 那么你还面临着异常吗?如果是,请尝试使用 PhoneNumberUtils API
  • 嗨 drax,不使用 Long 而不是 Int 解决了它。不知道为什么它会起作用。
【解决方案3】:

你需要放一个简单的条件:

if(mContactNumber.getText().length()>0)
{
    int contactNumber=Integer.parseInt(mContactNumber.getText().toString().trim());
}

【讨论】:

  • 只是说我在输入数字“5”时遇到了这个问题。它的字符串值的长度为 1。因此,我认为这种方法行不通。
【解决方案4】:

这可能是因为您将文本字段留空。你确定你解析的不是空字符串吗?

【讨论】:

猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2021-05-14
  • 2011-11-04
  • 2016-01-22
  • 1970-01-01
  • 1970-01-01
  • 2021-03-20
  • 2016-09-03
相关资源
最近更新 更多