I was starting with Android, but when doing something that in Java has never given me problems and launching it in an Android App, I have missed a lot of errors when executing it, because compiling does it without problems.
The exercise I try to perform is a very simple calculator, I take two values from two different TextViews, add them and show the result on a screen.
public class MainActivity extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
}
public void calcularResultado(View view) {
TextView cuadroNum1, cuadroNum2, resultado;
cuadroNum1 = (TextView) findViewById(R.id.tNum1);
cuadroNum2 = (TextView) findViewById(R.id.tNum2);
resultado = (TextView) findViewById(R.id.resultado);
int num1 = 0, num2 = 0, aux;
num1 = Integer.parseInt(cuadroNum1.getText().toString());
num2 = Integer.parseInt(cuadroNum2.getText().toString());
resultado.setText(String.format(""+ (num1 + num2) ));
}
}
After doing several tests I realized that the application was closed when emulating it with the casteos, as you can see in the code.
I do not know if in Android the casteos can not be done, because the TextView returns "Char Sequences", but passing them to String
does not give errors until I try to pass them to variables of type int
, or if I should use another alternative element to the TextView if I want to work with digits.
Code the error:
--------- beginning of crash
E/AndroidRuntime: FATAL EXCEPTION: main
Process: com.pabloperezaradros.calculadora, PID: 2740
java.lang.IllegalStateException: Could not execute method for android:onClick
at android.support.v7.app.AppCompatViewInflater$DeclaredOnClickListener.onClick(AppCompatViewInflater.java:293)
at android.view.View.performClick(View.java:5610)
at android.view.View$PerformClick.run(View.java:22260)
at android.os.Handler.handleCallback(Handler.java:751)
at android.os.Handler.dispatchMessage(Handler.java:95)
at android.os.Looper.loop(Looper.java:154)
at android.app.ActivityThread.main(ActivityThread.java:6077)
at java.lang.reflect.Method.invoke(Native Method)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:865)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:755)
Caused by: java.lang.reflect.InvocationTargetException
at java.lang.reflect.Method.invoke(Native Method)
at android.support.v7.app.AppCompatViewInflater$DeclaredOnClickListener.onClick(AppCompatViewInflater.java:288)
at android.view.View.performClick(View.java:5610)
at android.view.View$PerformClick.run(View.java:22260)
at android.os.Handler.handleCallback(Handler.java:751)
at android.os.Handler.dispatchMessage(Handler.java:95)
at android.os.Looper.loop(Looper.java:154)
at android.app.ActivityThread.main(ActivityThread.java:6077)
at java.lang.reflect.Method.invoke(Native Method)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:865)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:755)
Caused by: java.lang.NumberFormatException: For input string: ""
at java.lang.Integer.parseInt(Integer.java:533)
at java.lang.Integer.parseInt(Integer.java:556)
at com.pabloperezaradros.calculadora.MainActivity.calcularResultado(MainActivity.java:26)
at java.lang.reflect.Method.invoke(Native Method)
at android.support.v7.app.AppCompatViewInflater$DeclaredOnClickListener.onClick(AppCompatViewInflater.java:288)
at android.view.View.performClick(View.java:5610)
at android.view.View$PerformClick.run(View.java:22260)
at android.os.Handler.handleCallback(Handler.java:751)
at android.os.Handler.dispatchMessage(Handler.java:95)
at android.os.Looper.loop(Looper.java:154)
at android.app.ActivityThread.main(ActivityThread.java:6077)
at java.lang.reflect.Method.invoke(Native Method)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:865)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:755)