Buongiorno a tutti, scusate per il pessimo titolo, ma non sapevo come descrivere in poche parole il problema.
Prima di esporvi il problema vi dico quale è la mia idea: vorrei che dato una posizione random del mio array, che corrisponde ad una foto ,e che in un altro array corrisponde al titolo della foto, la facesse apparire a schermo. Dopo di che, una volta scritto il testo nell'Edit Text e premuto il pulsante, questo dovrebbe controllare che la foto sia giusta e ne mettesse un altra a ruota fino a che non siano finite le foto da mettere.
Ecco che arriva il problema: Non capisco perchè una volta eseguite le istruzioni di ricerca di eventuali doppioni sull'altro array e ' settata' i'immagine, non mi compare subito a schermo ma mi passa direttamente sotto all' listener del bottone, chiaramente uscendo subito, perchè non è stato premuto nessun bottone.
Come posso fare? Spero di essere stato chiaro nella spiegazione.
Prima di esporvi il problema vi dico quale è la mia idea: vorrei che dato una posizione random del mio array, che corrisponde ad una foto ,e che in un altro array corrisponde al titolo della foto, la facesse apparire a schermo. Dopo di che, una volta scritto il testo nell'Edit Text e premuto il pulsante, questo dovrebbe controllare che la foto sia giusta e ne mettesse un altra a ruota fino a che non siano finite le foto da mettere.
Codice:
public class Main extends Activity {
int[] foto = {R.drawable.coin,R.drawable.logo};
String[] titolo = {"Moneta", "Logo"};
int[] foto_indovinate = new int[2];
String[] titolo_indovinato = new String[2];
Random random = new Random();
int x = 0, y = 0;
boolean flg_chk = true;
final Bundle bdl = new Bundle();
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
final ImageView img = (ImageView) findViewById(R.id.Foto);
final Button btn_invio = (Button) findViewById(R.id.btn_Invio);
final EditText txt = (EditText) findViewById(R.id.editText1);
for(int j = 0; j < 3; j ++) {
x = random.nextInt(foto.length); // Assegno un valore random alla variabile
for (int k = 0; k < foto_indovinate.length; k++) { /* Controllo che all'interno dell'array di appoggio non sia presente una foto con lo stesso id*/
if (foto_indovinate[k] != foto[x]) {
flg_chk = true;
} else {
flg_chk = false;
}
}
if (flg_chk == true) { // Se non esiste l'id all'interno dell'array di appoggio...
Bitmap d = BitmapFactory.decodeResource(getApplicationContext().getResources(), foto[x]);
img.setImageBitmap(d); // Metto la foto
}
btn_invio.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) { // Al tocco sul bottone
if (txt.getText().toString().equals(titolo[x])) { // Se il titolo è giusto
Toast.makeText(Main.this, "Complimenti!", Toast.LENGTH_LONG).show();
foto_indovinate[y] = foto[x]; // Copio l'id della foto indovinata nell'array di appoggio...
titolo_indovinato[y] = titolo[x]; // ...e anche il titolo
y++; // Aumento il contatore per gli array di appoggio
} else { // Se il titolo è sbagliato
txt.setText(""); // Cancello il testo scritto
Toast.makeText(Main.this, "Canzone sbagliata", Toast.LENGTH_LONG).show();
}
}
});
x = 0; // Metto a 0 la variabile random
}
}
Ecco che arriva il problema: Non capisco perchè una volta eseguite le istruzioni di ricerca di eventuali doppioni sull'altro array e ' settata' i'immagine, non mi compare subito a schermo ma mi passa direttamente sotto all' listener del bottone, chiaramente uscendo subito, perchè non è stato premuto nessun bottone.
Come posso fare? Spero di essere stato chiaro nella spiegazione.