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 06/07/15, 01:51:06
Array

[xs_avatar]
nstrikecs nstrikecs no está en línea
Usuario poco activo
 
Fecha de registro: jul 2015
Localización: Santiago
Mensajes: 12
Tu operador: ENTEL

ayuda para Validar EditText

Hola estoy haciendo mi primera app y tengo un problema al intentar validar que se llenen los campos me topo con no saber realizar la validacion correctamente

intento realizar una calculadora del imc

dejo el codigo

Código:
package com.example.charbel.myapplication;

import android.support.v7.app.ActionBarActivity;
import android.os.Bundle;
import android.text.TextUtils;
import android.view.Menu;
import android.view.MenuItem;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;
import android.widget.TextView;


public class MainActivity extends ActionBarActivity {

    EditText campopeso;
    EditText campoaltura;

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


    }




     @override
    public boolean onCreateOptionsMenu(Menu menu) {
        // Inflate the menu; this adds items to the action bar if it is present.
        getMenuInflater().inflate(R.menu.menu_main, menu);
        return true;
    }

     @override
    public boolean onOptionsItemSelected(MenuItem item) {
            // Handle action bar item clicks here. The action bar will
        // automatically handle clicks on the Home/Up button, so long
        // as you specify a parent activity in AndroidManifest.xml.
        int id = item.getItemId();

        //noinspection SimplifiableIfStatement
        if (id == R.id.action_settings) {
            return true;
        }

        return super.onOptionsItemSelected(item);
    }

    public void CalcularIMC(View view)
    {
        TextView IMC = (TextView) findViewById(R.id.IMC);

        campopeso = (EditText) findViewById(R.id.campoPeso);
         campoaltura = (EditText) findViewById(R.id.campoAltura);

        String lecturaPeso = campopeso.getText().toString();
        String lecturaAltura = campoaltura.getText().toString();

        float peso = Float.parseFloat(lecturaPeso);
        float altura = Float.parseFloat(lecturaAltura);

        float imc = peso/(altura * altura);

        IMC.setText(String.valueOf(imc));

    }//fin metodo
}

Última edición por Dexafree Día 06/07/15 a las 08:28:35. Razón: Etiquetas de código
Responder Con Cita


  #2  
Viejo 06/07/15, 08:27:43
Array

[xs_avatar]
Dexafree Dexafree no está en línea
Mr. FAQMan
· Votos compra/venta: (1)
 
Fecha de registro: dic 2008
Mensajes: 8,021
Modelo de smartphone: Samsung Galaxy S i9000 + Galaxy Tab 10.1 WiFi
Tu operador: Movistar
Buenas

Primero de todo, veo que te acabas de registrar, así que bienvenido al foro!

Te recomiendo que te pases por la sección de presentaciones para que podamos conocerte un poquito mejor

Después, te he editado el código y lo he puesto entre etiquetas CODE.


[code]
Aquí tu código
[ /CODE] <- Quita el espacio entre el [ y la contrabarra (/) para cerrar el Tag correctamente


Eso ayuda a que sea más legible, ya que se respeta la indentación.

Por último, a qué te refieres exactamente con "Validación"?
En tu código estás confiando en que el valor que te van a introducir es un número decimal. Si no te entraran un número decimal, parseFloat lanzará una NumberFormatException, tal y como se indica en la documentación oficial

A partir de ahí cómo controlarlo ya es cosa tuya, si antes de hacer el parseFloat validas tu la String (expresiones regulares, por ejemplo), o aprovechar la excepción. Es tu decisión
Responder Con Cita
  #3  
Viejo 06/07/15, 12:45:30
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
Yo veo principalmente 2 problemas, y como te ha dicho Dexafree, al final es cosa tuya validar el String o comprobar la excepción.

En cuanto al primer problema, asegurarte que lo que introduces es un número es fácil, puedes añadir:

android:inputType="number"

En el EditText en su Layout. De esta forma el teclado que saldrá será el numérico, aunque con esto no solucionas totalmente el problema, porque el usuario podría tener algún teclado personalizado que no tenga modo para sólo números y también le saldrían las letras. Así que al final tendrás que comprobarlo.

El segundo problema es que aunque compruebes que los datos que introduces efectivamente son números, también tendrás que comprobar que altura es distinto de 0, porque si pones 0 obtendrás un DivideByZeroException:

float imc = peso/(altura * altura);
Responder Con Cita
  #4  
Viejo 06/07/15, 13:16:26
Array

[xs_avatar]
Dexafree Dexafree no está en línea
Mr. FAQMan
· Votos compra/venta: (1)
 
Fecha de registro: dic 2008
Mensajes: 8,021
Modelo de smartphone: Samsung Galaxy S i9000 + Galaxy Tab 10.1 WiFi
Tu operador: Movistar
 Cita: Originalmente Escrito por kriogeN Ver Mensaje
porque el usuario podría tener algún teclado personalizado que no tenga modo para sólo números
O Copiar + pegar
Responder Con Cita
  #5  
Viejo 06/07/15, 22:28:02
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
Vale, si pones:

android:digits="0123456789."

Sólo aceptará eso, no podrás poner letras y si intentas pegar algo que no tenga esos caracteres se ignorarán.
Responder Con Cita
  #6  
Viejo 07/07/15, 03:04:52
Array

[xs_avatar]
nstrikecs nstrikecs no está en línea
Usuario poco activo
 
Fecha de registro: jul 2015
Localización: Santiago
Mensajes: 12
Tu operador: ENTEL

Muchas gracias a todos se me encendió la bombilla y lo pude lograr , pude validar que los campos no puedan estar vacíos Fue Asi :

Código:
public void CalcularIMC(View view) {
        EditText campopeso = (EditText) findViewById(R.id.campoPeso);
        EditText campoaltura = (EditText) findViewById(R.id.campoAltura);

        TextView MuestraIMC = (TextView) findViewById(R.id.etiquetaIMC);
        TextView etiquetaTipoPeso = (TextView) findViewById(R.id.etiquetaTipoPeso);

        if (campopeso.getText().toString().equals("") || campoaltura.getText().toString().equals("") )
        {
            MuestraIMC.setText("Error");
            etiquetaTipoPeso.setText("Debe llenar todos los campos");
        }

        else {

            String lecturaPeso = campopeso.getText().toString();
            String lecturaAltura = campoaltura.getText().toString();

            float peso = Float.parseFloat(lecturaPeso);
            float altura = Float.parseFloat(lecturaAltura);

            if(altura<=0)
            {
                MuestraIMC.setText("Error");
                etiquetaTipoPeso.setText("La altura no Puede ser igual a 0");
            }

            else {
                float imc = peso / (altura * altura);

                MuestraIMC.setText(String.valueOf(imc));

                if(imc<18)
                etiquetaTipoPeso.setText("Bajo Peso");

                else
                if((imc>=18) && (imc<25))
                    etiquetaTipoPeso.setText("Peso Normal");
                else
                if((imc>=25) && (imc<27))
                    etiquetaTipoPeso.setText("Sobre Peso");
                else
                if (imc>=27)
                    etiquetaTipoPeso.setText("Obesidad");

            }
        }
    }//fin metodo Calcular IMC
En serio muchas gracias a todos

Ahora necesito mostrar unas imagenes y quedara listo
Muchas gracias nuevamente por su ayuda y disposicion
Responder Con Cita
  #7  
Viejo 08/07/15, 15:26:15
Array

[xs_avatar]
c2alvaro c2alvaro no está en línea
Miembro del foro
 
Fecha de registro: may 2015
Localización: Venezuela
Mensajes: 67
Modelo de smartphone: Galaxy S4 mini
Tu operador: Movistar
Muy buena solución compañero
Responder Con Cita
  #8  
Viejo 09/07/15, 01:30:54
Array

[xs_avatar]
nstrikecs nstrikecs no está en línea
Usuario poco activo
 
Fecha de registro: jul 2015
Localización: Santiago
Mensajes: 12
Tu operador: ENTEL

Ahora tengo el siguiente problema , quiero mostrar una imagen con el tipo de cuerpo según el resultado , que se vea a la derecha del resultado alguien me puede guiar ?
Responder Con Cita
  #9  
Viejo 09/07/15, 08:59:01
Array

[xs_avatar]
Dexafree Dexafree no está en línea
Mr. FAQMan
· Votos compra/venta: (1)
 
Fecha de registro: dic 2008
Mensajes: 8,021
Modelo de smartphone: Samsung Galaxy S i9000 + Galaxy Tab 10.1 WiFi
Tu operador: Movistar
 Cita: Originalmente Escrito por nstrikecs Ver Mensaje
Ahora tengo el siguiente problema , quiero mostrar una imagen con el tipo de cuerpo según el resultado , que se vea a la derecha del resultado alguien me puede guiar ?
1. Te recomiendo que, al ser una duda bastante distinta a la anterior, lo preguntes en un hilo distinto

2. También te recomiendo que te mires documentación y ejemplos sobre tema de Layouts, qué posibilidades ofrece cada uno...
El RelativeLayout puede ser lo que buscas

3. Tampoco entiendo si lo que preguntas es como se muestra una imagen, o como se pone al lado de un texto
Responder Con Cita
Respuesta

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



Hora actual: 17:30:32 (GMT +1)



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

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