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 10/04/13, 19:47:08
Array

[xs_avatar]
feelmusic feelmusic no está en línea
Miembro del foro
· Votos compra/venta: (3)
 
Fecha de registro: jul 2012
Localización: Alicante
Mensajes: 359
Modelo de smartphone: Nexus 4
Tu operador: Movistar
Duda en App

Buenas, estoy haciendo una aplicación sencilla tipo calculadora y lo que quiero es que al pulsar uno de los botones y el EditText este en blanco salga una notificacion, y asi evitar el error que sale y que cierra la apliacion.

Porque lo que quiero es evitar que se pulse el boton si no hay ningun numero escrito, que tambien podria ser una opcion, bloquear los botones si no hay nada escrito en el EditText. Y tampoco se como hacerlo


Gracias
Responder Con Cita


  #2  
Viejo 10/04/13, 20:20:24
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
No entiendo muy bien el problema, pero para la primera opción en el onClick del botón, y suponiendo que el EditText lo tienes almacenado en una variable que se llama editText

if (editText.getText().toString().trim().equals(""))
{
//Mostrar un Toast (Busca la Info)
return;
}
Responder Con Cita
  #3  
Viejo 11/04/13, 09:16:36
Array

[xs_avatar]
pablogarcia013 pablogarcia013 no está en línea
Miembro del foro
 
Fecha de registro: ene 2013
Localización: Madrid
Mensajes: 148
Modelo de smartphone: Samgung Galaxy s2
Tu operador: Orange
Para la segunda opcion podrias preguntar lo mismo
if (editText.getText().toString().trim().equals(""))
y si es vacio hacer un boton.setEnable(false);
Responder Con Cita
  #4  
Viejo 11/04/13, 10:07:48
Array

[xs_avatar]
feelmusic feelmusic no está en línea
Miembro del foro
· Votos compra/venta: (3)
 
Fecha de registro: jul 2012
Localización: Alicante
Mensajes: 359
Modelo de smartphone: Nexus 4
Tu operador: Movistar
Gracias a los dos, pero he probado ambas formas pero se sigue cerrando la aplicacion cuando el EditText esta vacio y pulso el boton
Responder Con Cita
  #5  
Viejo 11/04/13, 13:29:32
Array

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

Mira las trazas a ver dónde te da el NullPointerException o el error que sea, probablemente la variable editText la tengas mal inicializada o se te haya olvidado hacer el findViewById (cosa que me pasa constantemente)
__________________
El mejor Cuatro en Raya de Android (Hilo en HTCMania, Play Store) ¡Un millón de descargas!
Responder Con Cita
  #6  
Viejo 11/04/13, 15:34:09
Array

[xs_avatar]
feelmusic feelmusic no está en línea
Miembro del foro
· Votos compra/venta: (3)
 
Fecha de registro: jul 2012
Localización: Alicante
Mensajes: 359
Modelo de smartphone: Nexus 4
Tu operador: Movistar
Bueno aqui teneis el codigo para ver donde esta el error, el boton al pulsarlo y estar vacio el editText quiero mostra un mensaje, si en el editText hay un numero mayor de 200 mostrar 60 en un TextView y sino (menor que 200) mostrar la operacion matematica "eb".



public class MainActivity extends Activity implements OnClickListener {

EditText editText;
Button boton;

double v1, eb;

protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);


editText = (EditText) findViewById(R.id.editText);
boton = (Button) findViewById(R.id.boton);

boton.setOnClickListener(this);

public void onClick(View v) {
// TODO Auto-generated method stub


v1 = Double.parseDouble(editText.getText().toString());
eb = v1 * 0.10;//operacion matematica


switch(v.getId()){

case R.id.boton: //Boton

if(editText.getText().toString().trim().equals("") ){

Toast mensaje = Toast.makeText(this, "Introducir un número", Toast.LENGTH_SHORT);
mensaje.show();

}else if (v1 > 200){
//si v1 es mayor de 200
textView1.setText(String.valueOf("60"));
//mostrar en el textview1 60

}else{

textView1.setText(String.valueOf(eb));
//sino mostrar en el textView eb, que es una operacion matematica
}
Responder Con Cita
  #7  
Viejo 11/04/13, 15:38:29
Array

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

Hombre... la comprobación de vacío tendrás que hacerla antes de intentar convertirlo a double...

Aunque lo ideal sería meter el parseDouble en un try/catch, y si salta el catch mostrar la tostada.
__________________
El mejor Cuatro en Raya de Android (Hilo en HTCMania, Play Store) ¡Un millón de descargas!
Responder Con Cita
  #8  
Viejo 11/04/13, 17:27:09
Array

[xs_avatar]
Celtium Celtium no está en línea
Miembro del foro
 
Fecha de registro: may 2010
Mensajes: 432
Modelo de smartphone: Nexus One, 4

Presonaliza el onclick del boton, asi tendras todo un poco ordenado si llegas a tener muchos botones y haz lo que te dice mocelet, haz el calculo matematico cuando sepas que en el edittexxt hay algun valor, por que cuando no hay nada te petará. No se puede multiplicar un valor null por 0.10.

Código:
boton.setOnClickListener(new OnClickListener() {
                   public void onClick(View v) {
                              if (!editText.getText().toString().trim().equals("")) {
                                    v1 = Double.parseDouble(editText.getText().toString());
                                    eb = v1 * 0.10;//operacion matematica
                                    if (v1 > 200){    //si v1 es mayor de 200
                                            textView1.setText(String.valueOf("60")) //mostrar en el textview1 60
                                    }else{
                                            textView1.setText(String.valueOf(eb));     //sino mostrar en el textView eb, que es una operacion matematica
                              }         
                   }
});
Asi debia ir bien.
__________________

Responder Con Cita
  #9  
Viejo 11/04/13, 17:41:32
Array

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

En realidad el parseDouble lanza la excepción NumberFormatException si lo que le pasas no es algo convertible a un número.

Mejor que comprobar si el string está vacío:

Código:
try{
  v1 = Double.parseDouble (bla bla bla)
  // todas las cuentas y cosas sabiendo que v1 es un número correcto
}catch(NumberFormatException e){
  // lo del edit text no era un número, tostada o lo que sea
}
__________________
El mejor Cuatro en Raya de Android (Hilo en HTCMania, Play Store) ¡Un millón de descargas!
Responder Con Cita
  #10  
Viejo 11/04/13, 19:06:34
Array

[xs_avatar]
feelmusic feelmusic no está en línea
Miembro del foro
· Votos compra/venta: (3)
 
Fecha de registro: jul 2012
Localización: Alicante
Mensajes: 359
Modelo de smartphone: Nexus 4
Tu operador: Movistar
Vale, gracias. Ya lo he conseguido
Responder Con Cita
  #11  
Viejo 12/04/13, 12:45:11
Array

[xs_avatar]
feelmusic feelmusic no está en línea
Miembro del foro
· Votos compra/venta: (3)
 
Fecha de registro: jul 2012
Localización: Alicante
Mensajes: 359
Modelo de smartphone: Nexus 4
Tu operador: Movistar
El mensaje sale cuando el EditText esta en blanco, pero he observado que en los TextView en uno de ellos sale 0, en otro nada y el tecero 0.20.

He puesto un boton Reset para borrarlo todo con este codigo:

if (v1 >= 0){

etEditText.setText(String.valueOf(""));
tvNumero1.setText(String.valueOf(""));
tvNumero2.setText(String.valueOf(""));
tvNumero3.setText(String.valueOf(""));
tvNumero4.setText(String.valueOf(""));

}

Funciona perfectamente pero he probado a meter el codigo correspondiente de cada boton de borrado en el catch junto con Toast pero no funciona, ¿ hay que ponerlo en otro lugar o de otra manera?

Algo asi:

case.R.id.Boton1:

try{

v1 = Double.parseDouble(etNumero.getText().toString());

}

catch(NumberFormatException ex){

tvNumero1.setText(String.valueOf(""));

Toast mensaje = Toast.makeText(this, "Introduce un número", Toast.LENGTH_SHORT);
mensaje.show();

}
break;
Responder Con Cita
  #12  
Viejo 13/04/13, 11:54:51
Array

[xs_avatar]
feelmusic feelmusic no está en línea
Miembro del foro
· Votos compra/venta: (3)
 
Fecha de registro: jul 2012
Localización: Alicante
Mensajes: 359
Modelo de smartphone: Nexus 4
Tu operador: Movistar
Ya he encontrado la solucion
Responder Con Cita
  #13  
Viejo 26/04/13, 13:58:55
Array

[xs_avatar]
feelmusic feelmusic no está en línea
Miembro del foro
· Votos compra/venta: (3)
 
Fecha de registro: jul 2012
Localización: Alicante
Mensajes: 359
Modelo de smartphone: Nexus 4
Tu operador: Movistar
Tengo un editText pasado a float con la variable v2,
v2 = Float.parseFloat(etEditText.getText().toString());

y quiero establecer una condicion en el que v2 sea igual a nada, es decir, que el EditText este vacio y no se como ponerlo porque si no lo hubiera pasado a float se que seria algo asi : etEditText.getText().toString().trim().equals("")

sino me equivoco como casi siempre
Responder Con Cita
  #14  
Viejo 26/04/13, 17:33:00
Array

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

v2 siempre va a ser un número válido, si el edit text estuviera vacío te saltaría una excepción en el parseFloat, que o la capturas o se te cierra la app. Vamos, es lo mismo que comentábamos al principio del hilo

P.D: Sé que no te he contestado al MP todavía...
__________________
El mejor Cuatro en Raya de Android (Hilo en HTCMania, Play Store) ¡Un millón de descargas!
Responder Con Cita
  #15  
Viejo 26/04/13, 17:54:22
Array

[xs_avatar]
feelmusic feelmusic no está en línea
Miembro del foro
· Votos compra/venta: (3)
 
Fecha de registro: jul 2012
Localización: Alicante
Mensajes: 359
Modelo de smartphone: Nexus 4
Tu operador: Movistar
Si, ya lo del principio lo arregle con esto:

try{

v1 = Float.parseFloat(etEditText1.getText().toString()) ;


}

catch(NumberFormatException ex){

Toast mensaje = Toast.makeText(this, "Introduce un número", Toast.LENGTH_SHORT);
mensaje.show();


}

Y despues tengo las diferentes condiciones para las operaciones matematicas, lo que pasa es que he añadido otro EditText mas (para complicarlo mas) y hacer algunas operaciones con los numeros introducidos en los EditTexts. Lo que pasa es que me hace todas las operaciones que quiero que me haga con los dos EditText, porque tengo varias condiciones de este tipo:

if(v2>0 && v1>200)....

El problema viene cuando quiero utilizar un solo editText (el v1) para hacer una serie de calculos solo con los numeros introducidos en ese editText, y habia pensado en poner eso si en v2 no ha nada escrito y en v1 es mayor de tal... hacer tales cosas, pero no se como poner el v2 igual a nada.

O se podria poner un try catch con codiciones o otro try catch para cuando v2 no ha nada y en v1 si?


PD: No te preocupes por el MP
Responder Con Cita
  #16  
Viejo 26/04/13, 19:13:55
Array

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

Es que un float no puede ser nada, es un tipo primitivo y tiene un valor numérico. Necesitarás otra variable boolean que te indique si a v2 le tienes que hacer caso o no. El sitio para ponerlo es el try catch de v2, si el número se convierte bien la pones a true, si salta excepción, a false.
__________________
El mejor Cuatro en Raya de Android (Hilo en HTCMania, Play Store) ¡Un millón de descargas!
Responder Con Cita
Gracias de parte de:
  #17  
Viejo 27/04/13, 10:42:34
Array

[xs_avatar]
feelmusic feelmusic no está en línea
Miembro del foro
· Votos compra/venta: (3)
 
Fecha de registro: jul 2012
Localización: Alicante
Mensajes: 359
Modelo de smartphone: Nexus 4
Tu operador: Movistar
Ya entiendo, gracias mocelet
Responder Con Cita
Respuesta

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



Hora actual: 06:19:12 (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 / 邮件联系 /