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