2012-06-07 9 views
-1

Je crée une application très simple qui a seulement une barre de recherche que l'utilisateur peut utiliser. Mon code ressemble à ceci:Comment utiliser les préférences partagées sur Android?

@Override 
public void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.main); 
    int number=50; 
    SeekBar sb = (SeekBar)findViewById(R.id.slider); 
    sb.setMax(100); 
    sb.setProgress(number); 
    sb.setOnSeekBarChangeListener(this); 
} 

@Override 
public void onProgressChanged(SeekBar v, int progress, boolean isUser) { 
    TextView tv = (TextView)findViewById(R.id.percent); 
    tv.setText(Integer.toString(progress)+"%"); 


} 

Ce que je veux faire est de stocker SEEK état barres et lorsque l'application est tuée et l'utilisateur ouvre à nouveau, le dernier changement est affiché sur la barre de recherche et non la défaut. Donc, je dois utiliser les préférences partagées sur ma variable nombre int? Je ne comprends pas comment je peux le faire car lorsque l'application redémarre, la ligne int number=50 sera à nouveau exécutée, la valeur ira donc à 50 à nouveau.

+0

avez-vous déjà cherché la tâche avant de poser la question ..? –

Répondre

0

quelque chose comme ça devrait fonctionner:

@Override 
public void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.main); 
    SharedPreferences sp; 
    SharedPreferences.Editor spe; 


    sp = PreferenceManager.getDefaultSharedPreferences(this); 
    spe = sp.edit(); 


    int number= sp.getInt("seekNum", 50); 
    SeekBar sb = (SeekBar)findViewById(R.id.slider); 
    sb.setMax(100); 
    sb.setProgress(number); 
    sb.setOnSeekBarChangeListener(this); 
} 

@Override 
public void onProgressChanged(SeekBar v, int progress, boolean isUser) { 
    TextView tv = (TextView)findViewById(R.id.percent); 
    tv.setText(Integer.toString(progress)+"%"); 


} 


@Override 
public void onStop(){ 
    super.onStop(); 

    spe.putInt("seekNum", sb.getProgress()); 
    spe.commit(); 
} 
+0

Eh bien je mis en dehors des fonctions: SharedPreferences sp = PreferenceManager.getDefaultSharedPreferences (this); SharedPreferences.Editor spe = sp.edit(); SeekBar sb = (barre de recherche) findViewById (R.id.slider); de sorte que toutes mes fonctions peuvent voir cela, mais il se bloque sur la course – donparalias

0

Cela peut être modifié pour tout type de données dont vous avez besoin:

private void loadSettings(){ 
    if(prefs == null) prefs = mContext.getSharedPreferences(PREF_KEY, 0); 

    yourString = prefs.getString(YOUR_KEY, ""); 
} 
private void saveSettings(){ 
    if(prefs == null) prefs = mContext.getSharedPreferences(PREF_KEY, 0); 

    SharedPreferences.Editor prefsEd = prefs.edit(); 

    prefsEd.putString(YOUR_KEY, yourString); 

    prefsEd.commit(); 
} 
0

Vous pouvez le faire à la fois un sharedPreference ou savedInstanceState.

Découvrez Saving Android Activity state using Save Instance State

Bien sûr, la valeur de faire toujours être 10 dans cette affectation hardcoded. Vous devrez extraire cette valeur du sharedpref si vous décidez d'utiliser cette route.

1

StackOverflow n'est pas votre assistant de recherche. La tâche que vous essayez d'accomplir est ridiculement simple.

Consultez le documentation pour plus d'informations.

Questions connexes