Visualizzazione 'tardiva' dell'immagine passata.

Tommaso Dariozzi

Nuovo Utente
22 Apr 2015
6
0
0
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.

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.
 
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.

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.

onestamente non ho ben capito....se spieghi meglio posso provare ad aiutarti
 

Discussioni simili