CERCA
PER MODELLO
FullScreen Chatbox! :)

Utente del giorno: con ben Thanks ricevuti nelle ultime 24 ore
Utente della settimana: carotix con ben 4 Thanks ricevuti negli ultimi sette giorni
Utente del mese: megthebest con ben 21 Thanks ricevuti nell'ultimo mese

Visualizzazione dei risultati da 1 a 8 su 8
Discussione:

Visualizzazione 'tardiva' dell'immagine passata.

Se questa discussione ti è stata utile, ti preghiamo di lasciare un messaggio di feedback in modo che possa essere preziosa in futuro anche per altri utenti come te!
  1. #1
    Baby Droid


    Registrato dal
    Apr 2015
    Località
    Firenze
    Messaggi
    8
    Smartphone
    Samsung Galxy S4 mini

    Ringraziamenti
    3
    Ringraziato 0 volte in 0 Posts
    Predefinito

    Visualizzazione 'tardiva' dell'immagine passata.

    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.

    x
     
    1
    public class Main extends Activity {
    2
        int[] foto = {R.drawable.coin,R.drawable.logo};
    3
        String[] titolo = {"Moneta", "Logo"};
    4
        int[] foto_indovinate = new int[2];
    5
        String[] titolo_indovinato = new String[2];
    6
        Random random = new Random();
    7
        int x = 0, y = 0;
    8
        boolean flg_chk = true;
    9
       final Bundle bdl = new Bundle();
    10
    11
       //Override
    12
        protected void onCreate(Bundle savedInstanceState) {
    13
            super.onCreate(savedInstanceState);
    14
            setContentView(R.layout.activity_main);
    15
    16
    17
            final ImageView img = (ImageView) findViewById(R.id.Foto);
    18
            final Button btn_invio = (Button) findViewById(R.id.btn_Invio);
    19
            final EditText txt = (EditText) findViewById(R.id.editText1);
    20
    for(int j = 0; j < 3; j ++) {
    21
                x = random.nextInt(foto.length); // Assegno un valore random alla variabile
    22
                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*/
    23
                    if (foto_indovinate[k] != foto[x]) {
    24
                        flg_chk = true;
    25
                    } else {
    26
                        flg_chk = false;
    27
                    }
    28
                }
    29
    30
                if (flg_chk == true) {  // Se non esiste l'id all'interno dell'array di appoggio...
    31
                    Bitmap d = BitmapFactory.decodeResource(getApplicationContext().getResources(), foto[x]);
    32
                    img.setImageBitmap(d); // Metto la foto
    33
                }
    34
                btn_invio.setOnClickListener(new View.OnClickListener() {
    35
                    //Override
    36
                    public void onClick(View v) { // Al tocco sul bottone
    37
                        if (txt.getText().toString().equals(titolo[x])) { // Se il titolo è giusto
    38
    39
                            Toast.makeText(Main.this, "Complimenti!", Toast.LENGTH_LONG).show();
    40
                            foto_indovinate[y] = foto[x]; // Copio l'id della foto indovinata nell'array di appoggio...
    41
                            titolo_indovinato[y] = titolo[x]; // ...e anche il titolo
    42
                            y++; // Aumento il contatore per gli array di appoggio
    43
                        } else { // Se la canzone è sbagliata
    44
                            txt.setText(""); // Cancello il testo scritto
    45
                            Toast.makeText(Main.this, "Canzone sbagliata", Toast.LENGTH_LONG).show();
    46
    47
                        }
    48
                    }
    49
                });
    50
    51
                x = 0; // Metto a 0 la varibile random
    52
            }
    53
        }
    54
    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.
    55
    Come posso fare? Spero di essere stato chiaro nella spiegazione.
    56
     

  2.  
  3. #2
    Androidiano


    Registrato dal
    Apr 2011
    Località
    Lodi
    Messaggi
    256
    Smartphone
    Samsung S2, Nexus 5

    Ringraziamenti
    5
    Ringraziato 32 volte in 31 Posts
    Predefinito

    Ciao
    cosi ad occhio diversi errori, primo: "foto_indovinate" non viene mai popolato ma rimane sempre vuoto
    secondo:hai messo il listener del pulsante dentro la for
    metti le tue for ed i controlli dentro una funzione e chiamala all'inizio in oncreate, e poi richiamala all'interno dell'onclick se il titolo è corretto

    Nik
    Vedo tutto attraverso sabbia rossa e deserto...


  4. Il seguente Utente ha ringraziato nikita1977 per il post:

    Tommy95 (07-05-15)

  5. #3
    Baby Droid


    Registrato dal
    Apr 2015
    Località
    Firenze
    Messaggi
    8
    Smartphone
    Samsung Galxy S4 mini

    Ringraziamenti
    3
    Ringraziato 0 volte in 0 Posts
    Predefinito

    Quote Originariamente inviato da nikita1977 Visualizza il messaggio
    Ciao
    cosi ad occhio diversi errori, primo: "foto_indovinate" non viene mai popolato ma rimane sempre vuoto
    secondo:hai messo il listener del pulsante dentro la for
    metti le tue for ed i controlli dentro una funzione e chiamala all'inizio in oncreate, e poi richiamala all'interno dell'onclick se il titolo è corretto

    Nik
    Ciao, intanto di ringrazio della pronta risposta. La funzione che dovrei creare sarebbe una che faccia questo lavoro qua?
    12
     
    1
                        if (txt.getText().toString().equals(titolo[x])) { // Se il titolo è giusto
    2
    3
                            Toast.makeText(Main.this, "Complimenti!", Toast.LENGTH_LONG).show();
    4
                            foto_indovinate[y] = foto[x]; // Copio l'id della foto indovinata nell'array di appoggio...
    5
                            titolo_indovinato[y] = titolo[x]; // ...e anche il titolo
    6
                            y++; // Aumento il contatore per gli array di appoggio
    7
                        } else { // Se la canzone è sbagliata
    8
                            txt.setText(""); // Cancello il testo scritto
    9
                            Toast.makeText(Main.this, "Canzone sbagliata", Toast.LENGTH_LONG).show();
    10
    11
                        }
    12
                    }


    E la dovrei richiamare oltre a dove ipoteticamente già è anche dopo
    2
     
    1
            super.onCreate(savedInstanceState);
    2
            setContentView(R.layout.activity_main);


    Ho capito giusto?

  6. #4
    Androidiano


    Registrato dal
    Apr 2011
    Località
    Lodi
    Messaggi
    256
    Smartphone
    Samsung S2, Nexus 5

    Ringraziamenti
    5
    Ringraziato 32 volte in 31 Posts
    Predefinito

    Si eastto la richiami in oncreate dopo aver dichiarato i vari elementi della gui (come l'edittext) sennò poi va i n errore tipo:
    9
     
    1
            setContentView(R.layout.activity_main);
    2
    3
    4
            final ImageView img = (ImageView) findViewById(R.id.Foto);
    5
            final Button btn_invio = (Button) findViewById(R.id.btn_Invio);
    6
            final EditText txt = (EditText) findViewById(R.id.editText1);
    7
    8
           CaricaImmagine();
    9



    No la funzione dovrebbe fare questo:


    21
     
    1
     void CaricaImmagine(){
    2
    3
    4
                       for(int j = 0; j < 3; j ++) {
    5
                x = random.nextInt(foto.length); // Assegno un valore random alla variabile
    6
                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*/
    7
                    if (foto_indovinate[k] != foto[x]) {
    8
                        flg_chk = true;
    9
                    } else {
    10
                        flg_chk = false;
    11
                    }
    12
                }
    13
    14
                if (flg_chk == true) {  // Se non esiste l'id all'interno dell'array di appoggio...
    15
                    Bitmap d = BitmapFactory.decodeResource(getApplicationContext().getResources(), foto[x]);
    16
                    img.setImageBitmap(d); // Metto la foto
    17
                }
    18
    }
    19
    20
    21
    }



    e la richiami anche dal listener :
    22
     
    1
    2
    3
       btn_invio.setOnClickListener(new View.OnClickListener() {
    4
                    //Override
    5
                    public void onClick(View v) { // Al tocco sul bottone
    6
                        if (txt.getText().toString().equals(titolo[x])) { // Se il titolo è giusto
    7
    8
                            Toast.makeText(Main.this, "Complimenti!", Toast.LENGTH_LONG).show();
    9
                            foto_indovinate[y] = foto[x]; // Copio l'id della foto indovinata nell'array di appoggio...
    10
                            titolo_indovinato[y] = titolo[x]; // ...e anche il titolo
    11
                            y++; // Aumento il contatore per gli array di appoggio
    12
                           CaricaImmagine();
    13
                        } else { // Se la canzone è sbagliata
    14
                            txt.setText(""); // Cancello il testo scritto
    15
                            Toast.makeText(Main.this, "Canzone sbagliata", Toast.LENGTH_LONG).show();
    16
    17
                        }
    18
                    }
    19
                });
    20
    21
    22


    Non l'ho testata ma il concetto è questo

    Nik
    Ultima modifica di nikita1977; 07-05-15 alle 10:58
    Vedo tutto attraverso sabbia rossa e deserto...


  7. Il seguente Utente ha ringraziato nikita1977 per il post:

    Tommy95 (07-05-15)

  8. #5
    Baby Droid


    Registrato dal
    Apr 2015
    Località
    Firenze
    Messaggi
    8
    Smartphone
    Samsung Galxy S4 mini

    Ringraziamenti
    3
    Ringraziato 0 volte in 0 Posts
    Predefinito

    Quote Originariamente inviato da nikita1977 Visualizza il messaggio
    Si eastto la richiami in oncreate dopo aver dichiarato i vari elementi della gui (come l'edittext) sennò poi va i n errore tipo:
    9
     
    1
            setContentView(R.layout.activity_main);
    2
    3
    4
            final ImageView img = (ImageView) findViewById(R.id.Foto);
    5
            final Button btn_invio = (Button) findViewById(R.id.btn_Invio);
    6
            final EditText txt = (EditText) findViewById(R.id.editText1);
    7
    8
           CaricaImmagine();
    9



    No la funzione dovrebbe fare questo:


    21
     
    1
     void CaricaImmagine(){
    2
    3
    4
                       for(int j = 0; j < 3; j ++) {
    5
                x = random.nextInt(foto.length); // Assegno un valore random alla variabile
    6
                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*/
    7
                    if (foto_indovinate[k] != foto[x]) {
    8
                        flg_chk = true;
    9
                    } else {
    10
                        flg_chk = false;
    11
                    }
    12
                }
    13
    14
                if (flg_chk == true) {  // Se non esiste l'id all'interno dell'array di appoggio...
    15
                    Bitmap d = BitmapFactory.decodeResource(getApplicationContext().getResources(), foto[x]);
    16
                    img.setImageBitmap(d); // Metto la foto
    17
                }
    18
    }
    19
    20
    21
    }



    e la richiami anche dal listener :
    22
     
    1
    2
    3
       btn_invio.setOnClickListener(new View.OnClickListener() {
    4
                    //Override
    5
                    public void onClick(View v) { // Al tocco sul bottone
    6
                        if (txt.getText().toString().equals(titolo[x])) { // Se il titolo è giusto
    7
    8
                            Toast.makeText(Main.this, "Complimenti!", Toast.LENGTH_LONG).show();
    9
                            foto_indovinate[y] = foto[x]; // Copio l'id della foto indovinata nell'array di appoggio...
    10
                            titolo_indovinato[y] = titolo[x]; // ...e anche il titolo
    11
                            y++; // Aumento il contatore per gli array di appoggio
    12
                           CaricaImmagine();
    13
                        } else { // Se la canzone è sbagliata
    14
                            txt.setText(""); // Cancello il testo scritto
    15
                            Toast.makeText(Main.this, "Canzone sbagliata", Toast.LENGTH_LONG).show();
    16
    17
                        }
    18
                    }
    19
                });
    20
    21
    22


    Non l'ho testata ma il concetto è questo

    Nik
    Grazie mille! Adesso funziona come volevo!
    Un'altra cosa, come posso salvare lo stato degli array, una volta chiusa l'applicazione? Lo shared prefered potrebbe fare al caso mio?

  9. #6
    Androidiano


    Registrato dal
    Apr 2011
    Località
    Lodi
    Messaggi
    256
    Smartphone
    Samsung S2, Nexus 5

    Ringraziamenti
    5
    Ringraziato 32 volte in 31 Posts
    Predefinito

    Si certo puoi usaer le shared

    Nik
    Vedo tutto attraverso sabbia rossa e deserto...


  10. #7
    Baby Droid


    Registrato dal
    Apr 2015
    Località
    Firenze
    Messaggi
    8
    Smartphone
    Samsung Galxy S4 mini

    Ringraziamenti
    3
    Ringraziato 0 volte in 0 Posts
    Predefinito

    Quote Originariamente inviato da nikita1977 Visualizza il messaggio
    Si certo puoi usaer le shared

    Nik
    Cercando in giro (probabile abbia cercato male) ho trovato solo come salvare,per esempio una variabile, che mi può è utile per un vettore, ma per salvare tutto il contenuto di quel vettore fino a quel momento (foto_indovinate[], per intendersi) come posso fare? Perdonami, ma sono un neofita della programmazione Android

  11. #8
    Androidiano


    Registrato dal
    Apr 2011
    Località
    Lodi
    Messaggi
    256
    Smartphone
    Samsung S2, Nexus 5

    Ringraziamenti
    5
    Ringraziato 32 volte in 31 Posts
    Predefinito

    Si perchè in teoria dovresti usa delle ArrayList, ma puoi comunque fare così:


    19
     
    1
    public void storeIntArray(int[] array){
    2
        SharedPreferences.Editor edit= mContext.getSharedPreferences("NAME", Context.MODE_PRIVATE).edit();
    3
        edit.putInt("Count", array.length);
    4
        int count = 0;
    5
        for (int i: array){
    6
            edit.putInt("IntValue_" + count++, i);
    7
        }
    8
        edit.commit();
    9
    }
    10
    public int[] getFromPrefs(){
    11
        int[] ret;
    12
        SharedPreferences prefs = mContext.getSharedPreferences("NAME", Context.MODE_PRIVATE);
    13
        int count = prefs.getInt("Count", 0);
    14
        ret = new int[count];
    15
        for (int i = 0; i < count; i++){
    16
            ret[i] = prefs.getInt("IntValue_"+ i, i);
    17
        }
    18
        return ret;
    19
    }



    non +è elegante ma io lo uso quando ho piccoli array

    Ciao
    Nik
    Vedo tutto attraverso sabbia rossa e deserto...


  12. Il seguente Utente ha ringraziato nikita1977 per il post:

    Tommy95 (11-05-15)

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire risposte
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Torna su
Privacy Policy