JavascriptProva

giovedì 13 ottobre 2016

Aggiustamento seekBars: memorizzazione dei settaggi di tempo in SharedPreferences

Il passo successivo è memorizzare i valori.
Ho dimenticato completamente come si utilizzano le SharedPreferences.
Innanzitutto si dichiarano sempre. Facciamolo, all'inizio del modulo.
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_set_intervals);

        SP=getApplicationContext().getSharedPreferences("intervalli", Context.MODE_PRIVATE);
        vibrator=(Vibrator)this.getSystemService(VIBRATOR_SERVICE);
        textViewMin=(TextView) findViewById(R.id.textView1);
        textViewMax=(TextView) findViewById(R.id.textView2);
        seekBar1=(SeekBar)findViewById(R.id.seekBar1);
        seekBar2=(SeekBar)findViewById(R.id.seekBar2);
Se io salvo, come per fini mnemonici mi sembra meglio, il valore come intervallo, devo settare poi le seekBars a valori diminuiti di 10 diviso 10, e devo poi salvare in SharedPreferences i valori delle seekBars aumentati di 10 * 10.
Proviamo...

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_set_intervals);

        SP=getApplicationContext().getSharedPreferences("intervalli", Context.MODE_PRIVATE);
        vibrator=(Vibrator)this.getSystemService(VIBRATOR_SERVICE);
        textViewMin=(TextView) findViewById(R.id.textView1);
        textViewMax=(TextView) findViewById(R.id.textView2);
        seekBar1=(SeekBar)findViewById(R.id.seekBar1);
        seekBar2=(SeekBar)findViewById(R.id.seekBar2);

        seekBar1.setMax(17);
        seekBar2.setMax(17);

        //Qui metto l'inizializzazione delle seekBars.
        int intervalloMinimo=SP.getInt("intervalloMin",10);
        seekBar1.setProgress((intervalloMinimo-10)/10);
E vediamo...

Sì, sembra funzionare. Devo settare anche le textView. Per fare questo meglio calcolare prima ore e minuti, come ho fatto nel codice dello scrolling delle seekBars.
        //Qui metto l'inizializzazione delle seekBars.
        int intervalloMinimo=SP.getInt("intervalloMin",30);
        System.out.println(intervalloMinimo);
        int ore=intervalloMinimo/60;
        int minuti=intervalloMinimo%60;
        seekBar1.setProgress((intervalloMinimo-10)/10);
        textViewMin.setText(ore+" ore e "+minuti+" minuti");
E adesso sembra funzionare proprio bene...
Ora devo provvedere a salvare in SharedPreferences i valori ottenuti dalle seekBars.
Per far questo devo ritornare al codice dello scorrimento di esse...

Ho recuperato e ripassato il codice.
            @Override
            public void onProgressChanged(SeekBar seekBar, int i, boolean b) {
                vibrator.vibrate(25);
                int ore=(i*10+10)/60;
                int minuti=(i*10+10)%60;
                textViewMin.setText(ore+" ore e "+minuti+" minuti");

                if(seekBar2.getProgress()<i) seekBar2.setProgress(i);

                SharedPreferences.Editor editor=SP.edit();
                editor.putInt("intervalloMin",i*10+10);
                editor.commit();
            }
Vediamo se, salvando un valore diverso da quello di default (che ripristino a 10), questo viene memorizzato.

Sì, funziona!
Adesso sistemo anche l'altra seekBar e il lavoro risulta compiuto!
public class SetIntervals extends AppCompatActivity {

    SharedPreferences SP;
    Vibrator vibrator;
    SeekBar seekBar1, seekBar2;
    TextView textViewMin,textViewMax;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_set_intervals);

        SP=getApplicationContext().getSharedPreferences("intervalli", Context.MODE_PRIVATE);
        vibrator=(Vibrator)this.getSystemService(VIBRATOR_SERVICE);
        textViewMin=(TextView) findViewById(R.id.textView1);
        textViewMax=(TextView) findViewById(R.id.textView2);
        seekBar1=(SeekBar)findViewById(R.id.seekBar1);
        seekBar2=(SeekBar)findViewById(R.id.seekBar2);

        seekBar1.setMax(17);
        seekBar2.setMax(17);

        //Qui metto l'inizializzazione delle seekBars.
        int intervalloMinimo=SP.getInt("intervalloMin",10);
        int ore=intervalloMinimo/60;
        int minuti=intervalloMinimo%60;
        seekBar1.setProgress((intervalloMinimo-10)/10);
        textViewMin.setText(ore+" ore e "+minuti+" minuti");

        int intervalloMassimo=SP.getInt("intervalloMax",10);
        int ore2=intervalloMassimo/60;
        int minuti2=intervalloMassimo%60;
        seekBar2.setProgress((intervalloMassimo-10)/10);
        textViewMax.setText(ore2+ " ore e "+minuti2+" minuti");


        seekBar1.setOnSeekBarChangeListener(new SeekBar.OnSeekBarChangeListener(){

            @Override
            public void onProgressChanged(SeekBar seekBar, int i, boolean b) {
                vibrator.vibrate(25);
                int ore=(i*10+10)/60;
                int minuti=(i*10+10)%60;
                textViewMin.setText(ore+" ore e "+minuti+" minuti");

                if(seekBar2.getProgress()<i) seekBar2.setProgress(i);

                SharedPreferences.Editor editor=SP.edit();
                editor.putInt("intervalloMin",i*10+10);
                editor.commit();
            }


            @Override
            public void onStartTrackingTouch(SeekBar seekBar) {

            }

            @Override
            public void onStopTrackingTouch(SeekBar seekBar) {

            }
        });

        seekBar2.setOnSeekBarChangeListener(new SeekBar.OnSeekBarChangeListener(){

            @Override
            public void onProgressChanged(SeekBar seekBar, int i, boolean b) {
                vibrator.vibrate(25);
                int ore=(i*10+10)/60;
                int minuti=(i*10+10)%60;
                textViewMax.setText(ore+" ore e "+minuti+" minuti");

                if(seekBar1.getProgress()>i) seekBar1.setProgress(i);

                SharedPreferences.Editor editor=SP.edit();
                editor.putInt("intervalloMax",i*10+10);
                editor.commit();

            }

            @Override
            public void onStartTrackingTouch(SeekBar seekBar) {

            }

            @Override
            public void onStopTrackingTouch(SeekBar seekBar) {

            }
        });
    }
}
...e pare funzionare alla grande!

Nessun commento:

Posta un commento