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