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);
}
});
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();
});
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();
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é!
SharedPreferences mPrefs = PreferenceManager.getDefaultSharedPreferences(this);
SharedPreferences.Editor editor = mPrefs.edit();
editor.clear();
editor.commit();
Pourquoi ne pas écrire une classe d’utilitaire SharedPreference. Cela peut être consulté à partir des deux activités.