我有一个让我困惑的问题,我想使用EditText的值并将其转换为int, 当启动它在logcat上显示的活动“invalid int” 我使editText的输入值是9位数! 你能帮我找到问题吗?
这是我的代码:
String texti = numberi.getText().toString();
int x = Integer.parseInt(texti);
答案 0 :(得分:1)
您必须将其保存在long
long x = Long.parseLong(texti);
答案 1 :(得分:1)
如果您的唯一目标是允许用户在EditText中输入数字。然后使用
android:inputType="number"
然后Integer.parseInt(editText.getText().toString());
答案 2 :(得分:1)
onCreate()
中写过这个。所以你必须先检查,文本是否为空:
String texti = numberi.getText().toString();
long x;
if(texti.trim().length() > 0)
x = Long.parseLong(texti);
答案 3 :(得分:0)
texti
中的整数可能大于Integer.MAX_VALUE
值,因此请改用Long
long x = Long.parseLong(texti.trim());
答案 4 :(得分:0)
你的代码是正确的,但为了更好地使用它,
String texti = numberi.getText().toString();
int x = Integer.parseInt(texti.trim()); // Trim the extra spaces, if any.
转换为数字格式时,始终将habbit修剪为trim(),这将阻止NumberFormatException
答案 5 :(得分:0)
将字符串解析为整数:
Integer.parseInt(<Your EditText>.getText().toString());
答案 6 :(得分: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
}