1

我有一个让我感到困惑的问题,我想使用 EditText 的值并将其转换为 int,当启动它在 logcat “invalid int”上显示的活动时,我将 editText 的输入值设为 9 位!你能帮我找出问题吗

这是我的代码:

     String texti =  numberi.getText().toString();
     int x = Integer.parseInt(texti);
4

7 回答 7

1

你必须把它保存在long

long x = Long.parseLong(texti);
于 2013-02-22T05:06:51.520 回答
1

如果您的唯一目标是允许用户在 EditText 中输入数字。然后使用

android:inputType="number"

接着Integer.parseInt(editText.getText().toString());

于 2013-02-22T05:08:44.167 回答
1

你说你已经写了onCreate()。所以你必须先检查,文本是否为空:

String texti =  numberi.getText().toString();
long x;
if(texti.trim().length() > 0)
  x = Long.parseLong(texti);
于 2013-02-22T05:18:23.970 回答
0

中的整数texti可能大于Integer.MAX_VALUE值,因此请Long改用

long x = Long.parseLong(texti.trim());
于 2013-02-22T05:07:19.097 回答
0

您拥有的代码是正确的,但为了更好地使用它,

  String texti =  numberi.getText().toString();
  int x = Integer.parseInt(texti.trim());  // Trim the extra spaces, if any.

转换为数字格式时总是有 trim() 的习惯,这将防止NumberFormatException

于 2013-02-22T05:07:20.443 回答
0

将字符串解析为整数:

    Integer.parseInt(<Your EditText>.getText().toString());
于 2013-02-22T05:27:59.657 回答
0

理想情况下,如果您的 EditText 只接受整数,那么您应该将inputType属性设置为:

  • 数字签名
  • 数字

例如。像这样的东西:

<EditText
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:id="@+id/editTextCustomerPin"
        android:layout_marginTop="20dp"
        android:inputType="numberSigned"
        android:textSize="16dp" android:hint="@string/enterCustomerPin"
        android:layout_gravity="center_horizontal"/>

现在在您的活动中,您可以随时执行以下操作:

EditText myEditText = (EditText) findViewById(R.id.editTextCustomerPin);
String editTextContent = myEditText.getText().toString();
if (editTextContent.length() > 0) {
     int num = Integer.parseInt(num);
     //Do your processing
} else {  
     //Show error message, eg. a toast or an alert dialog
}
于 2013-02-22T05:46:04.970 回答