|
||
|
|
|
|||||||
| 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 |
![]() |
|
|
Herramientas |
|
#1
|
||||
|
||||
|
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 |
|
|
|
#2
|
||||
|
||||
|
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
__________________
|
|
#3
|
||||
|
||||
|
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); |
|
#5
|
||||
|
||||
|
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. |
|
#6
|
||||
|
||||
|
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
Ahora necesito mostrar unas imagenes y quedara listo Muchas gracias nuevamente por su ayuda y disposicion |
|
#7
|
||||
|
||||
|
Muy buena solución compañero
|
|
#8
|
||||
|
||||
|
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 ?
|
|
#9
|
||||
|
||||
![]() 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
__________________
|
![]() |
Estás aquí
|
||||||
|
||||||