web-dev-qa-db-fra.com

Android - Comment puis-je avoir les préférences partagées d'une autre activité?

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();
 }
  1. Dans Activity1.class, je clique sur le bouton pour régler le "son" sur "1".
  2. Je clique sur un autre btn qui ouvre Activity2.class où je reçois toujours "0" dans le message Toast.
31
erdomester

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);
}
63
includeMe

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
}
13
Anshul Agarwal

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"));
11
gilix

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

2
Prabh deep
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", "")

2
Harinder

Si facile! mais gardez à l’esprit que vous devez définir Préférences nom public statique dans l’activité où vous créez comme
public static String Preference = "yourPreferenceName"; 

puis appelez une autre activité comme celle-ci 

SharedPreferences myPreferences =getSharedPreferences("YourprefereneName",MODE_PRIVATE)
0
Mudassir

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());            
0
Mohammad Motevalli
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.

0
Vladimir Ivanov