AlexMnrs
06/02/15, 19:08:55
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 :loco:
Os muestro el 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);
}
El EditText es de tipo number:
<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" />
Gracias!!
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 :loco:
Os muestro el 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);
}
El EditText es de tipo number:
<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" />
Gracias!!