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