ok mais où mettre le background pour qu'à l'action de l'item sélectionné dans la listPreferences il me choisisse celui-ci?
ok mais où mettre le background pour qu'à l'action de l'item sélectionné dans la listPreferences il me choisisse celui-ci?
dans l'activity gérant les préférences
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36 import android.content.SharedPreferences; import android.content.SharedPreferences.OnSharedPreferenceChangeListener; import android.os.Bundle; import android.preference.PreferenceActivity; import android.widget.Toast; public class MesPreferences extends PreferenceActivity implements OnSharedPreferenceChangeListener{ SharedPreferences pref; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); addPreferencesFromResource(R.xml.mespreferences); pref = getPreferenceManager().getSharedPreferences(); pref.registerOnSharedPreferenceChangeListener(this); Preference listpref = (Preference) findPreference("listThème"); listpref.setOnPreferenceChangeListener(new OnPreferenceChangeListener() { @Override public boolean onPreferenceChange(Preference preference, Object newValue) { // ici tu récupères ton item et tu en déduis ton background } } } public void onSharedPreferenceChanged(SharedPreferences sharedPreferences,String key) { Toast.makeText(this, sharedPreferences.getString(key, ""), Toast.LENGTH_SHORT).show(); } }
Responsable Android de Developpez.com (Twitter et Facebook)
Besoin d"un article/tutoriel/cours sur Android, consulter la page cours
N'hésitez pas à consulter la FAQ Android et à poser vos questions sur les forums d'entraide mobile d'Android.
J'ai un force close à la sélection de l'item donc je suppose que ce n'est pas la bonne méthode employée ou bien cette partie de code ne vient pas ici mais dans mon activity principale non?
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6 public void onSharedPreferenceChanged(SharedPreferences sharedPreferences,String key) { String image = pref.getString("listT", "Saphir"); ((ImageView) findViewById(R.drawable.bg_red)).setImageResource(((getResources().getIdentifier(image, "drawable", "com.hades_files_explorer")))); Toast.makeText(this, sharedPreferences.getString(key, ""), Toast.LENGTH_SHORT).show(); } }
Bon j'ai réussi à appliquer un fonds d'écran avec cette fonction là :
Mon seul problème, c'est que lorsque je quitte l'application, le background n'y est plus et il faut que je le re-sélectionne...
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16 public boolean onOptionsItemSelected(MenuItem item) { switch (item.getItemId()) { case R.id.wallpaper: Toast.makeText(LogicielGrille.this, "Fonds d'écran", Toast.LENGTH_SHORT).show(); return true; case R.id.saphir: getWindow().setBackgroundDrawableResource(R.drawable.bg_saphir); return true; case R.id.rubis: getWindow().setBackgroundDrawableResource(R.drawable.bg_rubis); return true;
Pas très utile donc..
Je voudrais que le choix soit enregistré et que lorsqu'on relance mon application, le background précédemment choisit y soit affiché..
Merci pour vôtre aide!
Si tu passes par SharedPreferences le choix de l'utilisateur sera sauvegardé dans celle-ci.
J'ai un force close à la sélection de l'item donc je suppose que ce n'est pas la bonne méthode employée ou bien cette partie de code ne vient pas ici mais dans mon activity principale non?C'est quoi pref , ou tu l'initialises ?
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6 public void onSharedPreferenceChanged(SharedPreferences sharedPreferences,String key) { String image = pref.getString("listT", "Saphir"); ((ImageView) findViewById(R.drawable.bg_red)).setImageResource(((getResources().getIdentifier(image, "drawable", "com.hades_files_explorer")))); } }
De plus à quoi te sert les variables SharedPreferences sharedPreferences,String key , puisque tu ne les utilises pas .
Pour récupérer les valeurs dans Préférence passe par une fonction static .
Responsable Android de Developpez.com (Twitter et Facebook)
Besoin d"un article/tutoriel/cours sur Android, consulter la page cours
N'hésitez pas à consulter la FAQ Android et à poser vos questions sur les forums d'entraide mobile d'Android.
Non mais je me suis carrément perdu avec mes listPreferences ...
Je n'arrive pas du tout à gérer cette fonction...
Et ça m'agace alors j'ai trouvé une solutions peut-être plus adapté à ce que je veux mais ça n'enregistre pas le choix après avoir quitté l'application..(voir plus haut)
Désolé..
Pour répondre à ta question "c'est quoi pref, où tu l'initialises?"
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31 SharedPreferences pref; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); addPreferencesFromResource(R.xml.mespreferences); pref = getPreferenceManager().getSharedPreferences(); pref.registerOnSharedPreferenceChangeListener(this); Preference listpref = (Preference) findPreference("listThème"); listpref.setOnPreferenceChangeListener(new OnPreferenceChangeListener() { @Override public boolean onPreferenceChange(Preference preference, Object newValue) { // ici tu récupères ton item et tu en déduis ton background <--- je veux bien mais c'est là que je bloque! :mouarf: puis je ne sais pas comment l'inclure dans ma class ensuite... Je suis un vrai boulet!:roll::roll: } } } public void onSharedPreferenceChanged(SharedPreferences sharedPreferences,String key) { Toast.makeText(this, sharedPreferences.getString(key, ""), Toast.LENGTH_SHORT).show(); } }
Regarde le lien , cela sera plus facile.
http://www.kaloer.com/android-preferences
Appelle la fonction Taclass.onSharedPreferenceChanged(this) pour récupérer le nom de l'élément choisi , déduis en après le background associé .
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25 // pas besoin de l'implement public class MesPreferences extends PreferenceActivity { SharedPreferences pref; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); addPreferencesFromResource(R.xml.mespreferences); pref = getPreferenceManager().getSharedPreferences(); pref.registerOnSharedPreferenceChangeListener(this); // fait un listener sur le onChange que si tu veux vérifier si l'utilisateur peut choisir un item } public static String GetTheme(Context context) { SharedPreferences settings = PreferenceManager .getDefaultSharedPreferences(context); return settings.getString("listThème",DEFAULT_THEME); } }
Responsable Android de Developpez.com (Twitter et Facebook)
Besoin d"un article/tutoriel/cours sur Android, consulter la page cours
N'hésitez pas à consulter la FAQ Android et à poser vos questions sur les forums d'entraide mobile d'Android.
Et si je fais comme ça??
Je te jure je peux pas la sentir cette fonction !
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12 @Override public boolean onPreferenceChange(Preference preference, Object newValue) { onPreferenceChange(preference, "Defaut"); getResources().getDrawable(R.drawable.bg_defaut); return false; } }); }
Mais sinon en l'appliquant via mon menu "wallpaper", il n'y a pas moen d'enregistrer le choix de l'utilisateur??
, si il y aurait un moyen c'est de sauvegarder la valeur choisi dans les préférences , en lui donnant la valeur voulue , ça c'est toujours possible .
Quant au code que tu as posté , il met toujours le background par défault quelque soit la valeur choisi par les préférences ?
Responsable Android de Developpez.com (Twitter et Facebook)
Besoin d"un article/tutoriel/cours sur Android, consulter la page cours
N'hésitez pas à consulter la FAQ Android et à poser vos questions sur les forums d'entraide mobile d'Android.
Non il me met un ForceClose...
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48 12-07 16:40:28.734: ERROR/AndroidRuntime(276): FATAL EXCEPTION: main 12-07 16:40:28.734: ERROR/AndroidRuntime(276): java.lang.StackOverflowError 12-07 16:40:28.734: ERROR/AndroidRuntime(276): at com.hades_files_explorer.MesPreferences$1.onPreferenceChange(MesPreferences.java:31) 12-07 16:40:28.734: ERROR/AndroidRuntime(276): at com.hades_files_explorer.MesPreferences$1.onPreferenceChange(MesPreferences.java:31) 12-07 16:40:28.734: ERROR/AndroidRuntime(276): at com.hades_files_explorer.MesPreferences$1.onPreferenceChange(MesPreferences.java:31) 12-07 16:40:28.734: ERROR/AndroidRuntime(276): at com.hades_files_explorer.MesPreferences$1.onPreferenceChange(MesPreferences.java:31) 12-07 16:40:28.734: ERROR/AndroidRuntime(276): at com.hades_files_explorer.MesPreferences$1.onPreferenceChange(MesPreferences.java:31) 12-07 16:40:28.734: ERROR/AndroidRuntime(276): at com.hades_files_explorer.MesPreferences$1.onPreferenceChange(MesPreferences.java:31) 12-07 16:40:28.734: ERROR/AndroidRuntime(276): at com.hades_files_explorer.MesPreferences$1.onPreferenceChange(MesPreferences.java:31) 12-07 16:40:28.734: ERROR/AndroidRuntime(276): at com.hades_files_explorer.MesPreferences$1.onPreferenceChange(MesPreferences.java:31) 12-07 16:40:28.734: ERROR/AndroidRuntime(276): at com.hades_files_explorer.MesPreferences$1.onPreferenceChange(MesPreferences.java:31) 12-07 16:40:28.734: ERROR/AndroidRuntime(276): at com.hades_files_explorer.MesPreferences$1.onPreferenceChange(MesPreferences.java:31) 12-07 16:40:28.734: ERROR/AndroidRuntime(276): at com.hades_files_explorer.MesPreferences$1.onPreferenceChange(MesPreferences.java:31) 12-07 16:40:28.734: ERROR/AndroidRuntime(276): at com.hades_files_explorer.MesPreferences$1.onPreferenceChange(MesPreferences.java:31) 12-07 16:40:28.734: ERROR/AndroidRuntime(276): at com.hades_files_explorer.MesPreferences$1.onPreferenceChange(MesPreferences.java:31) 12-07 16:40:28.734: ERROR/AndroidRuntime(276): at com.hades_files_explorer.MesPreferences$1.onPreferenceChange(MesPreferences.java:31) 12-07 16:40:28.734: ERROR/AndroidRuntime(276): at com.hades_files_explorer.MesPreferences$1.onPreferenceChange(MesPreferences.java:31) 12-07 16:40:28.734: ERROR/AndroidRuntime(276): at com.hades_files_explorer.MesPreferences$1.onPreferenceChange(MesPreferences.java:31) 12-07 16:40:28.734: ERROR/AndroidRuntime(276): at com.hades_files_explorer.MesPreferences$1.onPreferenceChange(MesPreferences.java:31) 12-07 16:40:28.734: ERROR/AndroidRuntime(276): at com.hades_files_explorer.MesPreferences$1.onPreferenceChange(MesPreferences.java:31) 12-07 16:40:28.734: ERROR/AndroidRuntime(276): at com.hades_files_explorer.MesPreferences$1.onPreferenceChange(MesPreferences.java:31) 12-07 16:40:28.734: ERROR/AndroidRuntime(276): at com.hades_files_explorer.MesPreferences$1.onPreferenceChange(MesPreferences.java:31) 12-07 16:40:28.734: ERROR/AndroidRuntime(276): at com.hades_files_explorer.MesPreferences$1.onPreferenceChange(MesPreferences.java:31) 12-07 16:40:28.734: ERROR/AndroidRuntime(276): at com.hades_files_explorer.MesPreferences$1.onPreferenceChange(MesPreferences.java:31) 12-07 16:40:28.734: ERROR/AndroidRuntime(276): at com.hades_files_explorer.MesPreferences$1.onPreferenceChange(MesPreferences.java:31) 12-07 16:40:28.734: ERROR/AndroidRuntime(276): at com.hades_files_explorer.MesPreferences$1.onPreferenceChange(MesPreferences.java:31) 12-07 16:40:28.734: ERROR/AndroidRuntime(276): at com.hades_files_explorer.MesPreferences$1.onPreferenceChange(MesPreferences.java:31) 12-07 16:40:28.734: ERROR/AndroidRuntime(276): at com.hades_files_explorer.MesPreferences$1.onPreferenceChange(MesPreferences.java:31) 12-07 16:40:28.734: ERROR/AndroidRuntime(276): at com.hades_files_explorer.MesPreferences$1.onPreferenceChange(MesPreferences.java:31) 12-07 16:40:28.734: ERROR/AndroidRuntime(276): at com.hades_files_explorer.MesPreferences$1.onPreferenceChange(MesPreferences.java:31) 12-07 16:40:28.734: ERROR/AndroidRuntime(276): at com.hades_files_explorer.MesPreferences$1.onPreferenceChange(MesPreferences.java:31) 12-07 16:40:28.734: ERROR/AndroidRuntime(276): at com.hades_files_explorer.MesPreferences$1.onPreferenceChange(MesPreferences.java:31) 12-07 16:40:28.734: ERROR/AndroidRuntime(276): at com.hades_files_explorer.MesPreferences$1.onPreferenceChange(MesPreferences.java:31) 12-07 16:40:28.734: ERROR/AndroidRuntime(276): at com.hades_files_explorer.MesPreferences$1.onPreferenceChange(MesPreferences.java:31) 12-07 16:40:28.734: ERROR/AndroidRuntime(276): at com.hades_files_explorer.MesPreferences$1.onPreferenceChange(MesPreferences.java:31) 12-07 16:40:28.734: ERROR/AndroidRuntime(276): at com.hades_files_explorer.MesPreferences$1.onPreferenceChange(MesPreferences.java:31) 12-07 16:40:28.734: ERROR/AndroidRuntime(276): at com.hades_files_explorer.MesPreferences$1.onPreferenceChange(MesPreferences.java:31) 12-07 16:40:28.734: ERROR/AndroidRuntime(276): at com.hades_files_explorer.MesPreferences$1.onPreferenceChange(MesPreferences.java:31) 12-07 16:40:28.734: ERROR/AndroidRuntime(276): at com.hades_files_explorer.MesPreferences$1.onPreferenceChange(MesPreferences.java:31) 12-07 16:40:28.734: ERROR/AndroidRuntime(276): at com.hades_files_explorer.MesPreferences$1.onPreferenceChange(MesPreferences.java:31) 12-07 16:40:28.734: ERROR/AndroidRuntime(276): at com.hades_files_explorer.MesPreferences$1.onPreferenceChange(MesPreferences.java:31) 12-07 16:40:28.734: ERROR/AndroidRuntime(276): at com.hades_files_explorer.MesPreferences$1.onPreferenceChange(MesPreferences.java:31) 12-07 16:40:28.734: ERROR/AndroidRuntime(276): at com.hades_files_explorer.MesPreferences$1.onPreferenceChange(MesPreferences.java:31) 12-07 16:40:28.734: ERROR/AndroidRuntime(276): at com.hades_files_explorer.MesPreferences$1.onPreferenceChange(MesPreferences.java:31) 12-07 16:40:28.734: ERROR/AndroidRuntime(276): at com.hades_files_explorer.MesPreferences$1.onPreferenceChange(MesPreferences.java:31) 12-07 16:40:28.734: ERROR/AndroidRuntime(276): at com.hades_files_explorer.MesPreferences$1.onPreferenceChange(MesPreferences.java:31) 12-07 16:40:28.734: ERROR/AndroidRuntime(276): at com.hades_files_explorer.MesPreferences$1.onPreferenceChange(MesPreferences.java:31) 12-07 16:40:28.734: ERROR/AndroidRuntime(276): at
En même temps je n'avais pas trop fais attention , mais je crois que ton programme boucle .
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5 @Override public boolean onPreferenceChange(Preference preference, Object newValue) { onPreferenceChange(preference, "Defaut");
Cette ligne n'est pas correct .
Code : Sélectionner tout - Visualiser dans une fenêtre à part onPreferenceChange(preference, "Defaut");
Responsable Android de Developpez.com (Twitter et Facebook)
Besoin d"un article/tutoriel/cours sur Android, consulter la page cours
N'hésitez pas à consulter la FAQ Android et à poser vos questions sur les forums d'entraide mobile d'Android.
Comment ça mon programme "boucle" ?
Est-ce tout de même la bonne méthode ou bien je fais complètement fausse route?Cette ligne n'est pas correct .
Code : Sélectionner tout - Visualiser dans une fenêtre à part onPreferenceChange(preference, "Defaut");
Aurais-tu un exemple concret que tu pourrais aménager avec une partie de mon code stp??
Merci à toi. (encore)
On tourne en rond.
Le mieux est que tu fasses un tutorial sur les préférences .
http://www.kaloer.com/android-preferences
Essaye de comprendre comment le soft se comporte en débuggant l'appli.
Responsable Android de Developpez.com (Twitter et Facebook)
Besoin d"un article/tutoriel/cours sur Android, consulter la page cours
N'hésitez pas à consulter la FAQ Android et à poser vos questions sur les forums d'entraide mobile d'Android.
Vous avez un bloqueur de publicités installé.
Le Club Developpez.com n'affiche que des publicités IT, discrètes et non intrusives.
Afin que nous puissions continuer à vous fournir gratuitement du contenu de qualité, merci de nous soutenir en désactivant votre bloqueur de publicités sur Developpez.com.
Partager