![]() |
|
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 |
«
Tema Anterior
|
Siguiente tema
»
|
Herramientas |
#1
|
||||
|
||||
Comprobar si está vacío EditText de tipo número
Hola!!
Estoy aprendiendo a programar en Android desde el principio y para ello estoy creando un mini-juego de adivinar un número que se genera aleatoriamente del 1 al 10. Toda la parte de adivinar el número y demás es funcional, eso lo tengo todo OK, el problema está cuando le das al botón Adivinar sin haber ingresado nada en el EditText, la aplicación crashea, se detiene. Quiero crear la condición que si el EditText está vacío, ambos botones, el de Adivinar y el de Reiniciar, aparezcan deshabilitados, de esa manera nadie puede pulsarlos y la aplicación no crashearía. Por el contrario, si se detecta que el usuario ha ingresado un número, que se habilite el botón de Adivinar. He buscado y rebuscado en Google, y hay muchísima información, pero toda de distintas maneras y ninguna me ha funcionado ![]() Os muestro el código: Código:
public class PrincipalActivity extends Activity { // Declaramos variables private TextView info, numIntentos; private EditText numero; private Button adivinar, reiniciar; private int aleatorio; private int intentos = 3; @override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_principal); // Enlazamos las variables numIntentos = (TextView) findViewById(R.id.txtIntentos); info = (TextView) findViewById(R.id.txtInfo); numero = (EditText) findViewById(R.id.edtNumero); adivinar = (Button) findViewById(R.id.btnAdivinar); reiniciar = (Button) findViewById(R.id.btnReiniciar); aleatorio = generarAleatorio(); reiniciar.setEnabled(false); // IMAGINO QUE AQUÍ IRÍA LA CONDICIÓN DE LA QUE HABLO //Programamos el clic del botón Adivinar adivinar.setOnClickListener(new View.OnClickListener() { @override public void onClick(View v) { // Guardamos el número que ha ingresado el usuario int numeroIngresado; numeroIngresado = Integer.parseInt(numero.getText().toString()); // Si el numeroIngresado es igual al aleatorio, gana, si no, resta un intento if (aleatorio==numeroIngresado) { info.setText("Enhorabuena, ¡lo has adivinado!"); adivinar.setEnabled(false); reiniciar.setEnabled(true); } else { info.setText("¡Vuelve a intentarlo!"); intentos = intentos-1; numero.setText(""); } // Si el numeroIngresado es mayor a 10, avisar if (numeroIngresado>10){ info.setText("Ingresa un número del 1 al 10"); numero.setText(""); intentos = 3; } // Si gastas el max. de intentos, pierdes if (intentos == 0) { info.setText("¡Has perdido! ¡Vuelve a jugar!"); adivinar.setEnabled(false); reiniciar.setEnabled(true); } } }); //Programamos el clic del botón Reiniciar reiniciar.setOnClickListener(new View.OnClickListener() { @override public void onClick(View v) { intentos = 3; adivinar.setEnabled(true); reiniciar.setEnabled(false); info.setText(""); aleatorio = generarAleatorio(); numero.setText(""); } }); } // Función para generar números aleatorios del 0 al 10 private int generarAleatorio(){ return (int)(Math.random()*10+1); } Código:
<EditText android:layout_width="wrap_content" android:layout_height="wrap_content" android:inputType="number" android:ems="10" android:id="@+id/edtNumero" android:layout_gravity="center_horizontal" /> Última edición por AlexMnrs Día 06/02/15 a las 20:51:44 |
|
#2
|
||||
|
||||
Bueno, os cuento por si alguien tiene la misma duda. Lo he solucionado de la siguiente forma:
Esta línea: Código:
numeroIngresado = Integer.parseInt(numero.getText().toString()); Código:
numeroIngresado = numero.getText().toString()!=null && !numero.getText().toString().equals("") ? Integer.parseInt(numero.getText().toString()) : -1; Código:
// Si el numeroIngresado es mayor menos a 0 o mayor a 10, dar un toque if (numeroIngresado < 0 || numeroIngresado > 10){ Toast.makeText(getApplicationContext(), "Ingresa un número del 1 al 10!", Toast.LENGTH_SHORT).show(); intentos = 3; } |
Respuesta |
![]() |
||||||
|
«
Tema Anterior
|
Siguiente tema
»
|
|
Hora actual: 12:23:48 (GMT +2)
HTCMania: líderes desde el 2007