Autore Topic: Dichiarare una variabile solo la prima volta  (Letto 56 volte)

Offline Tiru

  • Nuovo arrivato
  • *
  • Post: 12
  • Respect: 0
    • Mostra profilo
  • Sistema operativo:
    windows 10
Dichiarare una variabile solo la prima volta
« il: 06 Gennaio 2017, 18:08:18 CET »
0
Salve, scusate sono ancora agli inizi e  ho un problema riguardante la dichiarazione di una variabile tipo int e un array di stringhe, dovrei dichiarare queste due variabili solo la prima volta che l'activity viene creata, ho provato a dichiararle nel metodo @OnCreate il problema è che poi nel metodo @pomodorobutton e @onSaveInstanceState e @onRestoreInstanceState non le trova, e se le dichiaro public, fuori da ogni metodo, ogni volta che riapro l'activity ritornato allo stato base.

public class Pasta_pomodoro extends AppCompatActivity {

//le due variabili
public int ingredienti_trovati=0;
public String[] trovati_ingredienti={" "," "," "," "};

//METODO ONCREATE
@Override
protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_pasta_pomodoro);
   }

//METODO SALVA E RIPRENDI
    @Override
    public void onSaveInstanceState(Bundle savedInstanceState) {
        super.onSaveInstanceState(savedInstanceState);

        savedInstanceState.putInt("MyInt", ingredienti_trovati);

    }

    @Override
    protected void onRestoreInstanceState(Bundle savedInstanceState) {
        super.onRestoreInstanceState(savedInstanceState);

        ingredienti_trovati = savedInstanceState.getInt("MyInt");
    }




//BUTTON METODO
public void pomodorobutton (View view){

            int ingredienti_trovati = 0;

            String[] trovati_ingredienti = {" ", " ", " ", " "};



        final TextView ing0     =   (TextView) findViewById(R.id.Ingrediente0);
        final TextView ing1     =   (TextView) findViewById(R.id.Ingrediente1);
        final TextView ing2     =   (TextView) findViewById(R.id.Ingrediente2);
        final TextView ing3     =   (TextView) findViewById(R.id.Ingrediente3);
        final EditText input    =   (EditText)  findViewById(R.id.ingredienti_edittext);

        ing3.setText(Integer.toString(ingredienti_trovati));
        String[] ingredienti    =   {"PASTA","POMODORO","GRANA","BASILICO"};
        int counter     =   0;
        boolean test    =   false;

        String inginput = input.getText().toString().toUpperCase();

        //per gli ingredienti trovati
        int conta_volte=0;
        boolean esistegia=false;

        //ciclo controlla se l'input e uno degli ingredienti
        while(counter<4&&!test){
            //se è un ingrediente entra nell if
            if(inginput.equals(ingredienti[counter])){
                //ciclo controlla se l'ingrediente è gia stato scritto
                while(conta_volte<4&&!esistegia){
                    if(inginput.equals(trovati_ingredienti[conta_volte])){
                        esistegia=true;
                    }
                    conta_volte++;
                }
                //se non è stato ancora scritto
                if(!esistegia) {
                    //assegna al posto vuoto l'ingrediente
                    trovati_ingredienti[ingredienti_trovati]=inginput;
                    if (ingredienti_trovati == 0) ing0.setText(inginput);
                    else if (ingredienti_trovati == 1) ing1.setText(inginput);
                    else if (ingredienti_trovati == 2) ing2.setText(inginput);
                    else if (ingredienti_trovati == 3) ing3.setText(inginput);
                    ingredienti_trovati++;
                    test = true;
                }
            }
            counter++;
        }
        input.setText("");

    }
}
« Ultima modifica: 07 Gennaio 2017, 14:09:21 CET da Tiru »