Dans mon application, il y a un bouton (activity1). Lorsque l'utilisateur clique dessus, je ne veux pas de son dans le jeu. J'ai pensé que je devrais le faire en utilisant des préférences partagées dans activity1 dans la méthode onClick du bouton:
SharedPreferences.Editor editor = mPrefs.edit();
editor.putString("sound","1");
editor.commit();
Le son et le jeu commencent dans une autre activité (activité2). J'ai besoin de lire l'ensemble des préférences partagées mais je ne sais pas comment le faire.
Merci
Modifier
J'ai laissé cette ligne:
SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences(Activity1.this);
Sur la base de votre aide dans Activity2.class, j'ai lu les préférences comme ceci:
SharedPreferences myPrefs = getSharedPreferences("Activity1", MODE_PRIVATE); //Activity1.class
String ifsound = myPrefs.getString("sound","");
if (ifsound.equals("1"))
{
Toast.makeText(Activity1.this, "1", Toast.LENGTH_LONG).show();
}
else
{
Toast.makeText(Activity1.this, "0", Toast.LENGTH_LONG).show();
}
Utilisez les fonctions suivantes pour ajouter des préférences partagées et pour récupérer les valeurs enregistrées de toutes les activités.
public static void setDefaults(String key, String value, Context context) {
SharedPreferences preferences = PreferenceManager.getDefaultSharedPreferences(context);
SharedPreferences.Editor editor = preferences.edit();
editor.putString(key, value);
editor.commit();
}
public static String getDefaults(String key, Context context) {
SharedPreferences preferences = PreferenceManager.getDefaultSharedPreferences(context);
return preferences.getString(key, null);
}
Dans Activity1 lors de l’enregistrement des préférences, utilisez:
SharedPreferences mPrefs = getSharedPreferences("IDvalue", 0);
//Give any name for //preference as I have given "IDvalue" and value 0.
SharedPreferences.Editor editor = mPrefs.edit();
editor.putString(key, value);
// give key value as "sound" you mentioned and value what you // to want give as "1" in you mentioned
editor.commit();
Dans Activity2 lors de la récupération de valeurs partagées, utilisez:
SharedPreferences mPrefs = getSharedPreferences("IDvalue",0);
String str = mPrefs.getString("sound", "");
if (str.equals("1")) {
// Do what you want
} else {
// Do what you want
}
Vous pouvez enregistrer une activité:
SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences(getActivity());
SharedPreferences.Editor editor = prefs.edit();
editor.putString("NameOfShared", "Value");
editor.commit();
Et obtenez-le d'une autre activité:
final SharedPreferences mSharedPreference= PreferenceManager.getDefaultSharedPreferences(getBaseContext());
String value=(mSharedPreference.getString("NameOfShared", "Default_Value"));
créer une classe pour les préférences partagées
package Android.com.be_uniquenative26_dec_2018.beUniqSmartit.util;
import Android.com.be_uniquenative26_dec_2018.R;
import Android.content.Context;
import Android.content.SharedPreferences;
import Java.util.Map;
import Java.util.Set;
/**
* Created by Android on 2/2/19.
*/
public class SessionSecuredPreferences implements SharedPreferences {
private SharedPreferences sharedPref;
protected Context context;
public SessionSecuredPreferences(Context context, SharedPreferences delegate) {
this.sharedPref = delegate;
this.context = context;
}
public SessionSecuredPreferences(Context context) {
this.sharedPref = context.getSharedPreferences ( StringUtil.getStringForID ( R.string.app_name ), Context.MODE_PRIVATE );
this.context = context;
}
@Override
public Map <String, ?> getAll() {
return this.sharedPref.getAll ( );
}
public Editor edit() {
return new Editor ( );
}
@Override
public boolean getBoolean(String key, boolean defValue) {
return this.sharedPref.getBoolean ( key, defValue );
}
@Override
public float getFloat(String key, float defValue) {
return this.sharedPref.getFloat ( key, defValue );
}
@Override
public int getInt(String key, int defValue) {
return this.sharedPref.getInt ( key, defValue );
}
@Override
public long getLong(String key, long defValue) {
return this.sharedPref.getLong ( key, defValue );
}
@Override
public String getString(String key, String defValue) {
return this.sharedPref.getString ( key, defValue );
}
@Override
public Set <String> getStringSet(String key, Set <String> defValues) {
return this.sharedPref.getStringSet ( key, defValues );
}
@Override
public boolean contains(String s) {
return this.sharedPref.contains ( s );
}
@Override
public void registerOnSharedPreferenceChangeListener(OnSharedPreferenceChangeListener onSharedPreferenceChangeListener) {
this.sharedPref.registerOnSharedPreferenceChangeListener ( onSharedPreferenceChangeListener );
}
@Override
public void unregisterOnSharedPreferenceChangeListener(OnSharedPreferenceChangeListener onSharedPreferenceChangeListener) {
this.sharedPref.unregisterOnSharedPreferenceChangeListener ( onSharedPreferenceChangeListener );
}
public class Editor implements SharedPreferences.Editor {
protected SharedPreferences.Editor editor;
public Editor() {
this.editor = SessionSecuredPreferences.this.sharedPref.edit ( );
}
@Override
public Editor putBoolean(String key, boolean value) {
this.editor.putBoolean ( key, value );
return this;
}
@Override
public Editor putFloat(String key, float value) {
this.editor.putFloat ( key, value );
return this;
}
@Override
public Editor putInt(String key, int value) {
this.editor.putInt ( key, value );
return this;
}
@Override
public Editor putLong(String key, long value) {
this.editor.putLong ( key, value );
return this;
}
@Override
public Editor putString(String key, String value) {
this.editor.putString ( key, value );
return this;
}
@Override
public Editor putStringSet(String key, Set <String> values) {
this.editor.putStringSet ( key, values );
return this;
}
@Override
public void apply() {
this.editor.apply ( );
}
@Override
public Editor clear() {
this.editor.clear ( );
return this;
}
@Override
public boolean commit() {
return this.editor.commit ( );
}
@Override
public Editor remove(String s) {
this.editor.remove ( s );
return this;
}
}
}
et utiliser cette classe toute activité et fragment et stocker facilement des données dans la préférence de partage
SharedPreferences myPrefs = getSharedPreferences("filename", MODE_PRIVATE);
String ipAdrs=myPrefs.getString("key", "");
si la clé n'a aucune valeur à l'intérieur, elle donnera la valeur par défaut que vous avez donnée dans la valeur ("key", "")
Si facile! mais gardez à l’esprit que vous devez définir Préférences nom public statique dans l’activité où vous créez commepublic static String Preference = "yourPreferenceName";
puis appelez une autre activité comme celle-ci
SharedPreferences myPreferences =getSharedPreferences("YourprefereneName",MODE_PRIVATE)
Première méthode de création dans MainActivity pour obtenir le contexte:
public Context getContext(){
Context mContext = MainActivity.this;
return mContext;
}
et
utilisez ceci dans chaque classe que vous voulez:
MainActivity mContext = new MainActivity();
SharedPreferences sharedPrefs =
PreferenceManager.getDefaultSharedPreferences(mContext.getContext());
SharedPrefernces prefs = getPreferences();
String sound = prefs.getString("sound");
Assurez-vous que vous avez mentionné le même nom de fichier pour le fichier de préférences.