When I try to run the code below, my program has stops. I want this code to get the value from edittext
but it´s not working as I expected it. What am I doing wrong?
public class MainActivity extends Activity {
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
Button sum = (Button) findViewById(R.id.button1);
Button cancel = (Button) findViewById(R.id.button2);
final EditText from = (EditText) findViewById(R.id.editText1);
final EditText upto = (EditText) findViewById(R.id.editText2);
final EditText runsum = (EditText) findViewById(R.id.editText3);
final int f = Integer.parseInt(from.getText().toString());
final int u = Integer.parseInt(upto.getText().toString());
}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
getMenuInflater().inflate(R.menu.activity_main, menu);
return true;
}
}
Here is my LogCat sorry for mess :/
08-28 19:34:44.241: E/Trace(3346): error opening trace file: No such file or directory (2)
08-28 19:34:44.780: D/AndroidRuntime(3346): Shutting down VM
08-28 19:34:44.780: W/dalvikvm(3346): threadid=1: thread exiting with uncaught exception(group=0x40a13300)
08-28 19:34:44.790: E/AndroidRuntime(3346): FATAL EXCEPTION: main
08-28 19:34:44.790: E/AndroidRuntime(3346): java.lang.RuntimeException: Unable to start activity ComponentInfo{com.example.project/com.example.project.MainActivity}: java.lang.NumberFormatException: Invalid int: ""
08-28 19:34:44.790: E/AndroidRuntime(3346): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2059)
08-28 19:34:44.790: E/AndroidRuntime(3346): at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2084)
08-28 19:34:44.790: E/AndroidRuntime(3346): at android.app.ActivityThread.access$600(ActivityThread.java:130)
08-28 19:34:44.790: E/AndroidRuntime(3346): at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1195)
08-28 19:34:44.790: E/AndroidRuntime(3346): at android.os.Handler.dispatchMessage(Handler.java:99)
08-28 19:34:44.790: E/AndroidRuntime(3346): at android.os.Looper.loop(Looper.java:137)
08-28 19:34:44.790: E/AndroidRuntime(3346): at android.app.ActivityThread.main(ActivityThread.java:4745)
08-28 19:34:44.790: E/AndroidRuntime(3346): at java.lang.reflect.Method.invokeNative(Native Method)
08-28 19:34:44.790: E/AndroidRuntime(3346): at java.lang.reflect.Method.invoke(Method.java:511)
08-28 19:34:44.790: E/AndroidRuntime(3346): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:786)
08-28 19:34:44.790: E/AndroidRuntime(3346): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:553)
08-28 19:34:44.790: E/AndroidRuntime(3346): at dalvik.system.NativeStart.main(Native Method)
08-28 19:34:44.790: E/AndroidRuntime(3346): Caused by: java.lang.NumberFormatException: Invalid int: ""
08-28 19:34:44.790: E/AndroidRuntime(3346): at java.lang.Integer.invalidInt(Integer.java:138)
08-28 19:34:44.790: E/AndroidRuntime(3346): at java.lang.Integer.parseInt(Integer.java:359)
08-28 19:34:44.790: E/AndroidRuntime(3346): at java.lang.Integer.parseInt(Integer.java:332)
08-28 19:34:44.790: E/AndroidRuntime(3346): at com.example.project.MainActivity.onCreate(MainActivity.java:25)
08-28 19:34:44.790: E/AndroidRuntime(3346): at android.app.Activity.performCreate(Activity.java:5008)
08-28 19:34:44.790: E/AndroidRuntime(3346): at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1079)
08-28 19:34:44.790: E/AndroidRuntime(3346): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2023)
08-28 19:34:44.790: E/AndroidRuntime(3346): ... 11 more
08-28 19:35:10.560: E/Trace(3394): error opening trace file: No such file or directory (2)
08-28 19:35:11.629: D/gralloc_goldfish(3394): Emulator without GPU emulation detected.
08-28 19:48:19.295: I/Choreographer(3394): Skipped 41 frames! The application may be doing too much work on its main thread.
The problem seems that when Activity is bringed to front there is no value in
EditText
. Integer parser don't know how to parse empty String, so Exception is thrown.You need to check for existing of text in that
EditText
before parsingSimilarly for other
EditText
- Please check the value of
EditText
, is it a validinteger
value or not.Try out this code:
as you can see from your Logcat:
there was an empty input that couldn't be converted into an
int
.try validating user input.