混乱する問題があります。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()
。したがって、最初に確認する必要があります。テキストがnullかどうかを確認してください。
String texti = numberi.getText().toString();
long x;
if(texti.trim().length() > 0)
x = Long.parseLong(texti);
文字列から整数への解析:
Integer.parseInt(<Your EditText>.getText().toString());
の整数は値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
理想的には、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
}