web-dev-qa-db-fra.com

Déconnexion Effacer les préférences partagées

J'ai une page de connexion qui enregistre le nom d'utilisateur et le mot de passe dans les préférences partagées. J'ai une autre classe d'activité qui comprend un bouton de déconnexion. Je veux effacer les préférences partagées lorsque je clique sur le bouton de déconnexion. Le problème est que je ne reçois pas les SharedPreferences de cette classe. Comment puis-je obtenir les références partagées?

Page de connexion

public class MainActivity extends Activity {
public SharedPreferences.Editor loginPrefsEditor;
    public  SharedPreferences loginPreferences;
    private Boolean saveLogin;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

    name = (EditText) findViewById(R.id.et_Username);
        pass = (EditText) findViewById(R.id.et_Password);
        login = (Button) findViewById(R.id.bt_Login);


         loginPreferences = getSharedPreferences("loginPrefs", MODE_PRIVATE);
         loginPrefsEditor = loginPreferences.edit();

         saveLogin = loginPreferences.getBoolean("saveLogin", false);



         if (saveLogin == true) {
                name.setText(loginPreferences.getString("username", ""));
                pass.setText(loginPreferences.getString("password", ""));


            }

        login.setOnClickListener(new OnClickListener()
        {
            @Override
            public void onClick(View v) {
                 name1 = name.getText().toString();
                 pass1 = pass.getText().toString();
               //new Thread (new Task()).start();
                    loginPrefsEditor.putBoolean("saveLogin", true);
                    loginPrefsEditor.putString("username", name1);
                    loginPrefsEditor.putString("password", pass1);
                    loginPrefsEditor.commit();
                 new myAsyncTask().execute();
            }
        });
}

Bouton de déconnexion dans AnotherActivity

 logout.setOnClickListener(new View.OnClickListener() {

            @Override
            public void onClick(View view) {
                // Launching News Feed Screen

                Intent i = new Intent(getApplicationContext(), MainActivity.class);
                startActivity(i);
            }
        });
8
HurkanSeyhan

Essaye ça !

logout.setOnClickListener(new View.OnClickListener() {

        @Override
        public void onClick(View view) {
            // Launching News Feed Screen

             SharedPreferences preferences =getSharedPreferences("loginPrefs",Context.MODE_PRIVATE);
             SharedPreferences.Editor editor = preferences.edit();
             editor.clear();
             editor.commit();
             finish();
 });
27
Krupa Patel

C'est aussi simple. Comme si vous sauvegardiez vos données dans SharedPrefernce

SharedPreferences sp = getSharedPreferences("MYKEY",0);
SharedPreferences.Editor editor = sp.edit();
editor.putString("username" , username);
editor.putString("password" , password);

Maintenant, vous pouvez récupérer comme dans n'importe quelle classe de votre application comme,

SharedPreferences sp = getSharedPreferences("MYKEY",0);
String uname = sp.getString("username");
String pwd = sp.getString("password");

Et pour effacer votre nom d'utilisateur et mot de passe 

editor.clear();
editor.commit();

ou

editor.remove("username");
editor.remove("password");
editor.commit();
1
Piyush

Je pense que vous avez du mal à comprendre les préférences partagées sous Android.

Selon la documentation officielle

Pour obtenir un objet SharedPreferences pour votre application, utilisez l'une des deux méthodes Suivantes:

getSharedPreferences () - Utilisez cette option si vous avez besoin de plusieurs fichiers de préférences identifiés par leur nom, que vous spécifiez avec le premier paramètre.

getPreferences () - Utilisez cette option si vous n'avez besoin que d'un fichier de préférences pour votre activité. Comme ce sera le seul fichier de préférences pour votre activité , Vous ne fournissez pas de nom.

Vous devriez avoir un contexte pour utiliser les deux méthodes ci-dessus.

De plus, les préférences partagées sont stockées en tant que paire clé-valeur. Par conséquent, effacer signifie que vous définissez les valeurs sur une chaîne vide.

Pour plus de détails et de meilleures explications, vous pouvez lire ici http://developer.Android.com/guide/topics/data/data-storage.html#pref Et http: // www.vogella.com/tutorials/AndroidFileBasedPersistence/article.html

J'espère que cela aidera.

À votre santé!

1
Shubhang Malviya
SharedPreferences mPrefs = PreferenceManager.getDefaultSharedPreferences(this);
SharedPreferences.Editor editor = mPrefs.edit();
editor.clear();
editor.commit();
0
Vipin Yadav

Pourquoi ne pas écrire une classe d’utilitaire SharedPreference. Cela peut être consulté à partir des deux activités. 

0
prijupaul