Programación y Desarrollo para Android Subforo exclusivo para temas de programación de software para PDAs y desarrollo de aplicaciones, interfaces, etc bajo Android

Respuesta
 
Herramientas
  #1  
Viejo 23/06/16, 01:37:47
Array

[xs_avatar]
nicolas2011alcubo nicolas2011alcubo no está en línea
Miembro del foro
 
Fecha de registro: dic 2011
Mensajes: 118
Tu operador: Movistar

Estoy haciendo una app, pero se me "crashea" apenas la ejecuto en mi smartphone!!!

Me estoy iniciando en esto de la programacion en Android. Me gusta usar AIDE y Android Studio.
Mi caso es que estoy haciendo una calculadora basica, donde hay 2 EditText donde se ingresan 2 valores flotantes, un Spinner para escoger la operacion aritmetica deseada (+, -, *, /) y bueno, boton para realizar el calculo, otro para borrar las entradas y poner en 0 el resultado y otro para salir de la app.

Empece ya con la codificacion en Java, y empece a testear la app y se me crashea. Quiero saber por que
Estoy usando AIDE en mi Grand II. Les paso todo el codigo por partes:

El proyecto se llama Aritmetica1
En res/values/strings esta el array con los elementos del Spinner:

<?xml version="1.0" encoding="utf-8"?>
<resources>

<string name="app_name">Aritmetica1</string>
<string name="hello_world">Hello world!</string>
<string-array name="signos">
<item> + </item>
<item> - </item>
<item> * </item>
<item> / </item>
</string-array>
</resources>

Ahora viene el layout main.xml:

<AbsoluteLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:gravity="center">

<TextView
android:text="-ARITMETICA 1-"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_x="120dp"
android:layout_y="20dp" />

<EditText
android:id="@+id/campo1"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:layout_y="100dp"
android:inputType="numberDecimal"
android:hint="Ingrese primer número:" />

<EditText
android:id="@+id/campo2"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:layout_y="180dp"
android:inputType="numberDecimal"
android:hint="Ingrese segundo número:" />

<Spinner
android:id="@+id/spoperaciines"
android:layout_width="60dp"
android:layout_height="wrap_content"
android:layout_x="80dp"
android:layout_y="240dp"
android:entries="@array/signos" />

<TextView
android:text="RESULTADO:"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_x="20dp"
android:layout_y="300dp" />

<TextView
android:id="@+id/txtresultado"
android:text="0"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_x="160dp"
android:layout_y="300dp" />

<Button
android:id="@+id/btnsalir"
android:text="Calcular"
android:layout_width="100dp"
android:layout_height="wrap_content"
android:layout_x="10dp"
android:layout_y="390dp" />

<Button
android:id="@+id/btnborrar"
android:text="Borrar"
android:layout_width="100dp"
android:layout_height="wrap_content"
android:layout_x="130dp"
android:layout_y="390dp" />

<Button
android:id="@+id/btnsalir"
android:text="Salir"
android:layout_width="100dp"
android:layout_height="wrap_content"
android:layout_x="250dp"
android:layout_y="390dp" />

</AbsoluteLayout>

(Hasta ahi todo ok, testeando la app se ejecutaba y no se cerraba instantaneamente)

Y por ultimo el pequeño codigo de la mainactivity en Java (Ahi si que se me cierra al instante de que se ejecuta, con el cartelito odioso que aparece cuando la app se cierra por un error):

package com.mycompany.myapp;

import android.app.*;
import android.os.*;
import android.view.*;
import android.widget.*;
import android.widget.AdapterView.*;
import org.w3c.dom.*;

public class MainActivity extends Activity
{
EditText c1, c2;
@override
protected void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
setContentView(R.layout.main);

c1 = (EditText) findViewById(R.id.campo1);
c2 = (EditText) findViewById(R.id.campo2);
Spinner spiop = (Spinner) findViewById(R.id.spoperaciines);
spiop.setOnItemSelectedListener(new OnItemSelectedListener(){
@override
public void onItemSelected(AdapterView<?> parent, View view, int position, long id){
String sel = (String) parent.getSelectedItem();

if(sel.equals("+")){
float n1 = Float.parseFloat(c1.getText().toString());
float n2 = Float.parseFloat(c2.getText().toString());
}
}
@override
public void onNothingSelected(AdapterView<?> parent){

}

});

}
}

Me imagino que hay reglas que no estoy respetando en Java, soy principiante, lo siento. A ver si me pueden explicar por que se crashea la app y como solucionar este problema. Gracias y saludos. Nicolas
Responder Con Cita


  #2  
Viejo 23/06/16, 18:08:41
Array

[xs_avatar]
nicolas2011alcubo nicolas2011alcubo no está en línea
Miembro del foro
 
Fecha de registro: dic 2011
Mensajes: 118
Tu operador: Movistar

Respuesta, por favor...
Responder Con Cita
  #3  
Viejo 24/06/16, 12:41:55
Array

[xs_avatar]
nicolas2011alcubo nicolas2011alcubo no está en línea
Miembro del foro
 
Fecha de registro: dic 2011
Mensajes: 118
Tu operador: Movistar

Pero respondan por favor. Mi duda es clara como el agua. Quiero saber por qué mi app se me cierra al ejecutarla, o sea que se "crahea". Respondan.
Responder Con Cita
  #4  
Viejo 24/06/16, 16:03:38
Array

[xs_avatar]
mocelet mocelet no está en línea
Desarrollador
 
Fecha de registro: may 2011
Localización: Madrid
Mensajes: 2,202
Tu operador: -

"Mi app se cierra, adivinen por qué pero no pienso darles pistas"

Como diría kriogeN, primero Java y luego Android. Cuando una app se cierra en Java es porque se ha lanzado una excepción, es algo básico del lenguaje. NullPointerException, IndexOutOfBoundsException, RuntimeException... son bastante autoexplicativas.

El entorno de desarrollo que uses te mostrará la excepción en los logs y fácilmente sabrás qué ocurre porque hasta te dice la linea de código que la ha producido y el motivo.
__________________
El mejor Cuatro en Raya de Android (Hilo en HTCMania, Play Store) ¡Un millón de descargas!

Última edición por mocelet Día 27/06/16 a las 13:45:23.
Responder Con Cita
  #5  
Viejo 24/06/16, 20:12:04
Array

[xs_avatar]
nicolas2011alcubo nicolas2011alcubo no está en línea
Miembro del foro
 
Fecha de registro: dic 2011
Mensajes: 118
Tu operador: Movistar

Probé hacer lo mismo, pero con Android Studio. Me generó la .apk sin problema, pero no me advirtió nada sobre excepciones. Sin embargo al instalar la apk de mi app en el celular se me cierra. Analicen el código en Java:

package com.desarrolla.nico.a1;

import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.*;
import android.widget.*;
import android.widget.AdapterView.*;
import org.w3c.dom.*;

public class MainActivity extends AppCompatActivity {
EditText c1, c2;
public float r;
@override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);

c1 = (EditText) findViewById(R.id.campo1);
c2 = (EditText) findViewById(R.id.campo2);
Spinner spiop = (Spinner) findViewById(R.id.spoperaciones);

spiop.setOnItemSelectedListener(new OnItemSelectedListener() {
@override
public void onItemSelected(AdapterView<?> parent, View view, int position, long id) {
String sel = (String) parent.getSelectedItem();

if(sel.equals("+")){
sumar();
}
}

@override
public void onNothingSelected(AdapterView<?> parent) {

}
});
}
public void sumar(){
float n1 = Float.parseFloat(c1.getText().toString());
float n2 = Float.parseFloat(c2.getText().toString());
r = n1 + n2;
}
}

¡Qué corección me harían ustedes en el código java?. Saludos. Nico
Responder Con Cita
  #6  
Viejo 24/06/16, 23:53:51
Array

[xs_avatar]
kriogeN kriogeN no está en línea
Colaborador/a
· Votos compra/venta: (1)
 
Fecha de registro: oct 2010
Localización: Murcia
Mensajes: 4,637
Modelo de smartphone: Samsung Galaxy S7 Edge SM-G935F
Tu operador: Vodafone
buffff... madre mía... AbsoluteLayout.... ya empezamos mal. Lleva deprecated desde casi el nacimiento de Android.

Como te ha dicho mocelet, los fallos en Java son bastante autoexplicativos, te dicen el fallo concreto y la línea exacta en donde falla. Sólo tienes que mirar el log que se genera en Android Studio al lanzar la aplicación.

Si después de ver la línea y el fallo no sabes como arreglarlo, ponlo aquí y seguro que podremos ayudarte.

Aunque así de entrada apuesto por algún fallo en el Manifest o en los Themes.
Responder Con Cita
  #7  
Viejo 25/06/16, 18:55:22
Array

[xs_avatar]
neoadn neoadn no está en línea
Usuario muy activo
 
Fecha de registro: abr 2010
Localización: Orense
Mensajes: 632
Modelo de smartphone: Redmi Note 4
Tu operador: Movistar
Usa linearlayout o relativelayout. Y luego conecta el móvil al Pc y ejecuta la App desde android studio cuando te de error te dirá cual es la razón en el log de android studio. Y en que línea está el fallo. Y otra cosa que yo haría es usar un try catch con un e.printstacktrace();

Sent from my Nexus 4 using Tapatalk
__________________
Responder Con Cita
  #8  
Viejo 25/06/16, 19:05:58
Array

[xs_avatar]
kriogeN kriogeN no está en línea
Colaborador/a
· Votos compra/venta: (1)
 
Fecha de registro: oct 2010
Localización: Murcia
Mensajes: 4,637
Modelo de smartphone: Samsung Galaxy S7 Edge SM-G935F
Tu operador: Vodafone
 Cita: Originalmente Escrito por neoadn Ver Mensaje
Usa linearlayout o relativelayout. Y luego conecta el móvil al Pc y ejecuta la App desde android studio cuando te de error te dirá cual es la razón en el log de android studio. Y en que línea está el fallo. Y otra cosa que yo haría es usar un try catch con un e.printstacktrace();

Sent from my Nexus 4 using Tapatalk
No es por nada, pero eso es una malísima idea, y que no te siente mal.

Las excepciones en Java existen para controlarlas cuando deben ser controladas, controlar una excepción que no debe controlarse sólo sirve para que no encuentres fallos que no deben producirse. Si algo falla porque esta mal escrito se arregla el código, no se soluciona poniendo un try-catch al lado de código incorrecto, porque es código inútil que realmente sobra.

Es como si pongo:

Albaran a = null;
a.facturar();

Está claro que ese código no va a funcionar nunca, y no se va a arreglar porque meta el método facturar() entre un try-catch, es mucho mejor que me salte la excepción y así pueda encontrarla y arreglarla.

Otra cosa muy distinta es que tenga por ejemplo un FileInputStream y lo meta entre un try-catch, porque ahí pueden producirse muchos fallos de IO, y debo controlarlo, de hecho Java me obliga a controlarlo.
Responder Con Cita
  #9  
Viejo 25/06/16, 19:07:17
Array

[xs_avatar]
neoadn neoadn no está en línea
Usuario muy activo
 
Fecha de registro: abr 2010
Localización: Orense
Mensajes: 632
Modelo de smartphone: Redmi Note 4
Tu operador: Movistar
Jeje por eso el e.printstacktrace dentro del catch..

Sinceramente no he leído el código pero por ejemplo si es sumar , restar números.. Etc.. Un try catch es la mejor opción y cuando retorne error pones en el catch el e.printstacktrace para que te diga donde esta el fallo y luego si tiene un tv.settext("Error");

No se si alguna vez lo usaste pero se algo tal que esto.

try{
// formula
}catch(Exception e){
e.printstacktrace ();
}

Así siempre sabrás donde viene el error y evitas problemas por floatParse.. Etc.. O que en un edittext no pongas que solo acepte números..


Sent from my Nexus 4 using Tapatalk
__________________

Última edición por neoadn Día 25/06/16 a las 19:15:52.
Responder Con Cita
  #10  
Viejo 25/06/16, 19:15:53
Array

[xs_avatar]
kriogeN kriogeN no está en línea
Colaborador/a
· Votos compra/venta: (1)
 
Fecha de registro: oct 2010
Localización: Murcia
Mensajes: 4,637
Modelo de smartphone: Samsung Galaxy S7 Edge SM-G935F
Tu operador: Vodafone
 Cita: Originalmente Escrito por neoadn Ver Mensaje
Jeje por eso el e.printstacktrace dentro del catch..

Sinceramente no he leído el código pero por ejemplo si es sumar , restar números.. Etc.. Un try catch es la mejor opción y cuando retorne error pones en el catch el e.printstacktrace para que te diga donde esta el fallo y luego si tiene un tv.settext("Error");

Sent from my Nexus 4 using Tapatalk
Bueno, cada uno es libre de programar como quiera

Pero como tu consejo es tan válido como el mio, el mio es que NUNCA se usen try-catch a lo loco sin motivo simplemente porque estén ahí. Es mucho mejor que la aplicación te explote en la cara para encontrar fallos de programación.

Y en las que sacas a producción, usar librerías como ACRA por ejemplo, para que al menos si la aplicación explota que le muestre algo bonito al usuario, y además te llegue un mensaje.

EDITO: Sobre lo que has editado, se perfectamente como funciona un try-catch, los uso mucho, pero cuando tienen sentido.
Responder Con Cita
  #11  
Viejo 25/06/16, 19:24:58
Array

[xs_avatar]
neoadn neoadn no está en línea
Usuario muy activo
 
Fecha de registro: abr 2010
Localización: Orense
Mensajes: 632
Modelo de smartphone: Redmi Note 4
Tu operador: Movistar
 Cita: Originalmente Escrito por kriogeN Ver Mensaje
Bueno, cada uno es libre de programar como quiera

Pero como tu consejo es tan válido como el mio, el mio es que NUNCA se usen try-catch a lo loco sin motivo simplemente porque estén ahí. Es mucho mejor que la aplicación te explote en la cara para encontrar fallos de programación.

Y en las que sacas a producción, usar librerías como ACRA por ejemplo, para que al menos si la aplicación explota que le muestre algo bonito al usuario, y además te llegue un mensaje.
Si, tienes razón, usarlo a lo loco puede complicarte mucho la vida pero en algunos casos si sabes usarlo yo lo recomendaría...

Solo hay que ver ver muchas de las libs que usamos... están llenas de try catch y bueno en el caso que tu dices mas bien te obligan a ponerlo. IOException e. Pero bueno yo no tengo mucha idea de programación sólo por ver algún tutorial

Y tranquilo que no me ofendo. Me gusta aprender.

Sent from my Nexus 4 using Tapatalk
__________________
Responder Con Cita
  #12  
Viejo 25/06/16, 19:25:21
Array

[xs_avatar]
nicolas2011alcubo nicolas2011alcubo no está en línea
Miembro del foro
 
Fecha de registro: dic 2011
Mensajes: 118
Tu operador: Movistar

Es complicado programar en Android!
Responder Con Cita
  #13  
Viejo 25/06/16, 19:30:17
Array

[xs_avatar]
kriogeN kriogeN no está en línea
Colaborador/a
· Votos compra/venta: (1)
 
Fecha de registro: oct 2010
Localización: Murcia
Mensajes: 4,637
Modelo de smartphone: Samsung Galaxy S7 Edge SM-G935F
Tu operador: Vodafone
 Cita: Originalmente Escrito por neoadn Ver Mensaje
Si, tienes razón, usarlo a lo loco puede complicarte mucho la vida pero en algunos casos si sabes usarlo yo lo recomendaría...

Solo hay que ver ver muchas de las libs que usamos... están llenas de try catch y bueno en el caso que tu dices mas bien te obligan a ponerlo. IOException e. Pero bueno yo no tengo mucha idea de programación sólo por ver algún tutorial

Y tranquilo que no me ofendo. Me gusta aprender.

Sent from my Nexus 4 using Tapatalk
Lo bueno de la programación es que cada uno puede hacerla como quiera

Pero mi consejo es que no se controlen errores que no tienen porque controlarse, lo que hay que hacer es arreglarlos.

En cuanto a lo que dice @nicolas2011alcubo

No es complicado programar en Android, simplemente hay que saber para que sirve cada elemento. Una vez que dominas los ciclos de vida de las Activity y de los Fragment, el resto viene solo.
Responder Con Cita
  #14  
Viejo 25/06/16, 19:39:35
Array

[xs_avatar]
neoadn neoadn no está en línea
Usuario muy activo
 
Fecha de registro: abr 2010
Localización: Orense
Mensajes: 632
Modelo de smartphone: Redmi Note 4
Tu operador: Movistar
 Cita: Originalmente Escrito por kriogeN Ver Mensaje
Lo bueno de la programación es que cada uno puede hacerla como quiera

Pero mi consejo es que no se controlen errores que no tienen porque controlarse, lo que hay que hacer es arreglarlos.

En cuanto a lo que dice @nicolas2011alcubo

No es complicado programar en Android, simplemente hay que saber para que sirve cada elemento. Una vez que dominas los ciclos de vida de las Activity y de los Fragment, el resto viene solo.
Tienes razón, evidentemente si da un error es por algo está mal y lo lógico sería arreglarlo.

Sent from my Nexus 4 using Tapatalk
__________________
Responder Con Cita
  #15  
Viejo 26/06/16, 17:59:28
Array

[xs_avatar]
nicolas2011alcubo nicolas2011alcubo no está en línea
Miembro del foro
 
Fecha de registro: dic 2011
Mensajes: 118
Tu operador: Movistar

Estos son los errores que me tira al intentar lanzarla desde el Android Studio a mi celular:

06-26 12:55:59.711 20051-20051/? I/SELinux: Function: selinux_android_load_priority [0], There is no sepolicy file

06-26 12:55:59.711 20051-20051/? I/SELinux: Function: selinux_android_load_priority [1], There is no sepolicy version file

06-26 12:55:59.711 20051-20051/? I/SELinux: Function: selinux_android_load_priority , loading version is VE=SEPF_SM-G710_4.3_0035


06-26 12:55:59.711 20051-20051/? I/SELinux: selinux_android_seapp_context_reload: seapp_contexts file is loaded from /seapp_contexts
06-26 12:55:59.721 20051-20051/? D/dalvikvm: Late-enabling CheckJNI
06-26 12:55:59.891 20051-20051/com.desarrolla.nico.a1 W/dalvikvm: VFY: unable to find class referenced in signature (Landroid/view/SearchEvent;)
06-26 12:55:59.891 20051-20051/com.desarrolla.nico.a1 I/dalvikvm: Could not find method android.view.Window$Callback.onSearchRequested, referenced from method android.support.v7.view.WindowCallbackWrapper.onSe archRequested
06-26 12:55:59.891 20051-20051/com.desarrolla.nico.a1 W/dalvikvm: VFY: unable to resolve interface method 15038: Landroid/view/Window$Callback;.onSearchRequested (Landroid/view/SearchEvent;)Z
06-26 12:55:59.891 20051-20051/com.desarrolla.nico.a1 D/dalvikvm: VFY: replacing opcode 0x72 at 0x0002
06-26 12:55:59.891 20051-20051/com.desarrolla.nico.a1 I/dalvikvm: Could not find method android.view.Window$Callback.onWindowStartingActio nMode, referenced from method android.support.v7.view.WindowCallbackWrapper.onWi ndowStartingActionMode
06-26 12:55:59.901 20051-20051/com.desarrolla.nico.a1 W/dalvikvm: VFY: unable to resolve interface method 15042: Landroid/view/Window$Callback;.onWindowStartingActionMode (Landroid/view/ActionMode$Callback;I)Landroid/view/ActionMode;
06-26 12:55:59.901 20051-20051/com.desarrolla.nico.a1 D/dalvikvm: VFY: replacing opcode 0x72 at 0x0002
06-26 12:55:59.981 20051-20051/com.desarrolla.nico.a1 I/dalvikvm: Could not find method android.content.res.TypedArray.getChangingConfigur ations, referenced from method android.support.v7.widget.TintTypedArray.getChangi ngConfigurations
06-26 12:55:59.981 20051-20051/com.desarrolla.nico.a1 W/dalvikvm: VFY: unable to resolve virtual method 396: Landroid/content/res/TypedArray;.getChangingConfigurations ()I
06-26 12:55:59.981 20051-20051/com.desarrolla.nico.a1 D/dalvikvm: VFY: replacing opcode 0x6e at 0x0002
06-26 12:55:59.981 20051-20051/com.desarrolla.nico.a1 I/dalvikvm: Could not find method android.content.res.TypedArray.getType, referenced from method android.support.v7.widget.TintTypedArray.getType
06-26 12:55:59.981 20051-20051/com.desarrolla.nico.a1 W/dalvikvm: VFY: unable to resolve virtual method 418: Landroid/content/res/TypedArray;.getType (I)I
06-26 12:55:59.981 20051-20051/com.desarrolla.nico.a1 D/dalvikvm: VFY: replacing opcode 0x6e at 0x0002
06-26 12:56:00.061 20051-20051/com.desarrolla.nico.a1 I/dalvikvm: Could not find method android.widget.Spinner.getPopupContext, referenced from method android.support.v7.widget.AppCompatSpinner.getPopu pContext
06-26 12:56:00.061 20051-20051/com.desarrolla.nico.a1 W/dalvikvm: VFY: unable to resolve virtual method 15698: Landroid/widget/Spinner;.getPopupContext ()Landroid/content/Context;
06-26 12:56:00.061 20051-20051/com.desarrolla.nico.a1 D/dalvikvm: VFY: replacing opcode 0x6f at 0x000b
06-26 12:56:00.091 20051-20051/com.desarrolla.nico.a1 I/dalvikvm: Could not find method android.widget.PopupWindow.showAsDropDown, referenced from method android.support.v7.widget.AppCompatPopupWindow.sho wAsDropDown
06-26 12:56:00.091 20051-20051/com.desarrolla.nico.a1 W/dalvikvm: VFY: unable to resolve virtual method 15621: Landroid/widget/PopupWindow;.showAsDropDown (Landroid/view/View;III)V
06-26 12:56:00.091 20051-20051/com.desarrolla.nico.a1 D/dalvikvm: VFY: replacing opcode 0x6f at 0x000d
06-26 12:56:00.101 20051-20051/com.desarrolla.nico.a1 E/dalvikvm: Could not find class 'android.widget.ThemedSpinnerAdapter', referenced from method android.support.v7.widget.AppCompatSpinner$DropDow nAdapter.<init>
06-26 12:56:00.101 20051-20051/com.desarrolla.nico.a1 W/dalvikvm: VFY: unable to resolve instanceof 1913 (Landroid/widget/ThemedSpinnerAdapter;) in Landroid/support/v7/widget/AppCompatSpinner$DropDownAdapter;
06-26 12:56:00.101 20051-20051/com.desarrolla.nico.a1 D/dalvikvm: VFY: replacing opcode 0x20 at 0x0016
06-26 12:56:00.331 20051-20051/com.desarrolla.nico.a1 D/libEGL: loaded /vendor/lib/egl/libEGL_adreno.so
06-26 12:56:00.341 20051-20051/com.desarrolla.nico.a1 D/libEGL: loaded /vendor/lib/egl/libGLESv1_CM_adreno.so
06-26 12:56:00.541 20051-20051/com.desarrolla.nico.a1 D/libEGL: loaded /vendor/lib/egl/libGLESv2_adreno.so
06-26 12:56:00.541 20051-20051/com.desarrolla.nico.a1 I/Adreno-EGL: <qeglDrvAPI_eglInitialize:316>: EGL 1.4 QUALCOMM build: AU_LINUX_ANDROID_JB_3.2_RB2.04.03.00.129.062_msm82 26_JB_3.2_RB2__release_AU ()
OpenGL ES Shader Compiler Version: 20.00.01
Build Date: 10/19/13 Sat
Local Branch:
Remote Branch: quic/jb_3.2_rb2.17
Local Patches: NONE
Reconstruct Branch: AU_LINUX_ANDROID_JB_3.2_RB2.04.03.00.129.062 + NOTHING
06-26 12:56:00.641 20051-20051/com.desarrolla.nico.a1 D/OpenGLRenderer: Enabling debug mode 0
06-26 12:56:00.701 20051-20051/com.desarrolla.nico.a1 D/AndroidRuntime: Shutting down VM
06-26 12:56:00.701 20051-20051/com.desarrolla.nico.a1 W/dalvikvm: threadid=1: thread exiting with uncaught exception (group=0x417848c8)
06-26 12:56:00.711 20051-20051/com.desarrolla.nico.a1 E/AndroidRuntime: FATAL EXCEPTION: main
java.lang.NumberFormatException: Invalid float: ""
at java.lang.StringToReal.invalidReal(StringToReal.ja va:63)
at java.lang.StringToReal.parseFloat(StringToReal.jav a:289)
at java.lang.Float.parseFloat(Float.java:300)
at com.desarrolla.nico.a1.MainActivity.sumar(MainActi vity.java:39)
at com.desarrolla.nico.a1.MainActivity$1.onItemSelect ed(MainActivity.java:28)
at android.widget.AdapterView.fireOnSelected(AdapterV iew.java:899)
at android.widget.AdapterView.access$200(AdapterView. java:50)
at android.widget.AdapterView$SelectionNotifier.run(A dapterView.java:863)
at android.os.Handler.handleCallback(Handler.java:730 )
at android.os.Handler.dispatchMessage(Handler.java:92 )
at android.os.Looper.loop(Looper.java:176)
at android.app.ActivityThread.main(ActivityThread.jav a:5493)
at java.lang.reflect.Method.invokeNative(Native Method)
at java.lang.reflect.Method.invoke(Method.java:525)
at com.android.internal.os.ZygoteInit$MethodAndArgsCa ller.run(ZygoteInit.java:1225)
at com.android.internal.os.ZygoteInit.main(ZygoteInit .java:1041)
at dalvik.system.NativeStart.main(Native Method)
Responder Con Cita
  #16  
Viejo 26/06/16, 19:27:25
Array

[xs_avatar]
mocelet mocelet no está en línea
Desarrollador
 
Fecha de registro: may 2011
Localización: Madrid
Mensajes: 2,202
Tu operador: -

Supongo que habrás dedicado un rato a echarle un vistazo a las trazas antes de pegarlo aquí, en especial a esta parte:

Código:
06-26 12:56:00.711 20051-20051/com.desarrolla.nico.a1 E/AndroidRuntime: FATAL EXCEPTION: main
java.lang.NumberFormatException: Invalid float: ""
at java.lang.StringToReal.invalidReal(StringToReal.ja va:63)
at java.lang.StringToReal.parseFloat(StringToReal.jav a:289)
at java.lang.Float.parseFloat(Float.java:300)
at com.desarrolla.nico.a1.MainActivity.sumar(MainActivity.java:39)
Formato de número incorrecto, float inválido, "", es decir, una cadena vacía. La excepción se produjo en parseFloat que es el método que analiza una String para devolverte el float. Si la String no es un número salta excepción.

La llamada al parseFloat la haces en la línea 39 de tu MainActivity en el método sumar.

Deberías comprobar antes de llamar al parseFloat que no está vacío. O darle un valor por defecto al EditText de "0" (que es lo que hace cualquier calculadora).
__________________
El mejor Cuatro en Raya de Android (Hilo en HTCMania, Play Store) ¡Un millón de descargas!
Responder Con Cita
  #17  
Viejo 26/06/16, 20:18:09
Array

[xs_avatar]
nicolas2011alcubo nicolas2011alcubo no está en línea
Miembro del foro
 
Fecha de registro: dic 2011
Mensajes: 118
Tu operador: Movistar

Y cömo compuebo si un EditText no está vací?). ¿Cömo escribo la condiciön?. (Se que se usa getText(), pero cömo pongo la condiciön para comparar el valor de un EditText para saber si está vacío?)
Responder Con Cita
  #18  
Viejo 27/06/16, 10:32:03
Array

[xs_avatar]
kriogeN kriogeN no está en línea
Colaborador/a
· Votos compra/venta: (1)
 
Fecha de registro: oct 2010
Localización: Murcia
Mensajes: 4,637
Modelo de smartphone: Samsung Galaxy S7 Edge SM-G935F
Tu operador: Vodafone
 Cita: Originalmente Escrito por nicolas2011alcubo Ver Mensaje
Y cömo compuebo si un EditText no está vací?). ¿Cömo escribo la condiciön?. (Se que se usa getText(), pero cömo pongo la condiciön para comparar el valor de un EditText para saber si está vacío?)
Se que me repito mucho... pero... primero Java, luego Android.

Si no sabes como comparar si una cadena es vacía te falta mucho conocimiento como para poder desarrollar una app en condiciones.

Sería algo así:

et.getText().toString().trim().equals("")

et es el EditText
getText() para obtener el texto
toString() porque el getText() devuelve un CharSequence, no un String
trim() para quitar posibles espacios
equals("") para compararlo con la cadena vacía
Responder Con Cita
  #19  
Viejo 27/06/16, 17:16:09
Array

[xs_avatar]
nicolas2011alcubo nicolas2011alcubo no está en línea
Miembro del foro
 
Fecha de registro: dic 2011
Mensajes: 118
Tu operador: Movistar

¡Primero Java, después Android y después Javandroid!. ☺
Gracias por tu ayuda amigo. Estuve analizando a fondo mi código y he deducido que al iniciar la app el Spinner tiene seleccionada por defecto el elemento +, lo que hace que instantáneamente se ejecute la rutina sumar(); y es ahí donde hace los parseFloat sin haberse ingresado ningún valor en los EditText. Tiene que haber una forma de que al iniciar la app el Spinner no tenga ninguno de los elementos seleccionados. No sé si me explico.
Responder Con Cita


Respuesta

Estás aquí
Regresar   Portal | Indice > Todo sobre Android > Programación y Desarrollo para Android



Hora actual: 09:31:19 (GMT +2)



User Alert System provided by Advanced User Tagging (Lite) - vBulletin Mods & Addons Copyright © 2024 DragonByte Technologies Ltd.

Contactar por correo / Contact by mail / 邮件联系 /