Get numbers from EditText
Solution 1
The exception is:
Java.lang.NumberFormatException: unable to parse '' as integer
And it's only because there is no value in the editbox1 field.
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.popupvalores);
valor1 = (EditText) findViewById (R.id.editText1);
myEditValue = valor1.getText().toString();
Log.debug("logtag", myEditValue); // Here you can see the output.
try {
valor = Integer.parseInt(myEditValue);
}
catch(Exception e) {
Log.e("logtag", "Exception: " + e.toString());
}
}
Solution 2
You are trying to access valor1
too soon, valor1
is currently an empty string. You must process the value after to user has had a chance to define something.
Try adding a button like this:
(Button) button = (Button) findViewByID(R.id.button1);
button.setOnClickListener(new OnClickListener() {
public void onClick(View view) {
String temp = valor1.getText().toString();
if(temp.isEmpty() == false) {
valor = Integer.parseInt(temp);
Log.v("SO", "Valor = " + valor);
}
}
}
Solution 3
The code is trying to parse an empty string from the EditText '' as an int which causes an exception to be thrown.
Your example code is also missing the closing LinearLayout tag.
R-Roadster
Updated on June 04, 2022Comments
-
R-Roadster almost 2 years
I know that his have been asked a few times, but I have been trying everything I have found with no luck. I'm still having a error. Here's my code.
xml
<?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="fill_parent" android:layout_height="fill_parent" android:layout_gravity="center" android:background="@android:color/transparent" android:gravity="center" android:orientation="vertical" > <TextView android:id="@+id/textView1" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="Write item value." android:textColor="@android:color/black" android:textSize="25dp" /> <EditText android:id="@+id/editText1" android:layout_width="80dp" android:layout_height="wrap_content" android:layout_marginBottom="202dp" android:ems="10" android:hint="Value" android:inputType="number" > <requestFocus /> </EditText>
java
public class PopupValores extends Activity { EditText valor1; String myEditValue; public static int valor; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.popupvalores); valor1 = (EditText) findViewById (R.id.editText1); myEditValue = valor1.getText().toString(); valor = Integer.parseInt(myEditValue); <<<<Line 20 } }
LogCat
05-08 21:02:10.023: W/dalvikvm(6074): threadid=1: thread exiting with uncaught exception (group=0x40020578) 05-08 21:02:10.039: E/AndroidRuntime(6074): FATAL EXCEPTION: main 05-08 21:02:10.039: E/AndroidRuntime(6074): java.lang.RuntimeException: Unable to start activity ComponentInfo{com.dc.maker/com.dc.maker.PopupValores}: java.lang.NumberFormatException: unable to parse '' as integer 05-08 21:02:10.039: E/AndroidRuntime(6074): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1651) 05-08 21:02:10.039: E/AndroidRuntime(6074): at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:1667) 05-08 21:02:10.039: E/AndroidRuntime(6074): at android.app.ActivityThread.access$1500(ActivityThread.java:117) 05-08 21:02:10.039: E/AndroidRuntime(6074): at android.app.ActivityThread$H.handleMessage(ActivityThread.java:935) 05-08 21:02:10.039: E/AndroidRuntime(6074): at android.os.Handler.dispatchMessage(Handler.java:99) 05-08 21:02:10.039: E/AndroidRuntime(6074): at android.os.Looper.loop(Looper.java:130) 05-08 21:02:10.039: E/AndroidRuntime(6074): at android.app.ActivityThread.main(ActivityThread.java:3687) 05-08 21:02:10.039: E/AndroidRuntime(6074): at java.lang.reflect.Method.invokeNative(Native Method) 05-08 21:02:10.039: E/AndroidRuntime(6074): at java.lang.reflect.Method.invoke(Method.java:507) 05-08 21:02:10.039: E/AndroidRuntime(6074): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:867) 05-08 21:02:10.039: E/AndroidRuntime(6074): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:625) 05-08 21:02:10.039: E/AndroidRuntime(6074): at dalvik.system.NativeStart.main(Native Method) 05-08 21:02:10.039: E/AndroidRuntime(6074): Caused by: java.lang.NumberFormatException: unable to parse '' as integer 05-08 21:02:10.039: E/AndroidRuntime(6074): at java.lang.Integer.parseInt(Integer.java:362) 05-08 21:02:10.039: E/AndroidRuntime(6074): at java.lang.Integer.parseInt(Integer.java:332) 05-08 21:02:10.039: E/AndroidRuntime(6074): at com.popupclass.PopupValores.onCreate(PopupValores.java:20) 05-08 21:02:10.039: E/AndroidRuntime(6074): at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1047) 05-08 21:02:10.039: E/AndroidRuntime(6074): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1615) 05-08 21:02:10.039: E/AndroidRuntime(6074): ... 11 more
I'm trying to get a int from the EditText and then use it in other class to determinate a value of something. Can someone tell me what I'm doing wrong?
Thanks