0
votes

Comment contrôler le stockage des données utilisateur à l'aide de SharedPreferences lors de la connexion et de la sortie?

J'essaie de créer une application qui utilise le nom d'utilisateur et le mot de passe pour vous connecter, puis restez connecté tant que l'utilisateur n'a pas déconnecté -or n'a pas supprimé les données de l'application, et aussi loin que je sache que SharedPreferences est le meilleur à le faire. Comment puis-je la mettre en œuvre correctement?

J'ai essayé de créer un objet SharedPreferences, puis de l'évaluation de l'éditeur pour vérifier à l'application de lancement s'il y a des données stockées pour le nom d'utilisateur et le mot de passe, et si cela vous connecte automatiquement. Ensuite, pour la déconnexion, une fois que la touche de déconnexion est cliquée, les touches de nom d'utilisateur et de mot de passe sont supprimées de SharedPreferences. Mais je ne suis pas sûr, je suppose que je l'ai fait de mauvaise manière pour que l'application ne fonctionne pas. P>

Voici un exemple simple de ce que je veux faire (assumer tous les fichiers XML et Les identifiants ont raison parce que l'application fonctionnait bien avant d'ajouter SharedPreferences): p>

loginactivité.java: p> xxx pré>

homologue.java: p>

public class HomeActivity extends AppCompatActivity {
    private SharedPreferences perf;
    private Button button_logout;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_home);

        perf = getApplicationContext().getSharedPreferences("user_pref", 0);


        //button_logout define
        button_logout.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                SharedPreferences.Editor editor = perf.edit();
                editor.remove("username");
                editor.remove("password");
                Intent logoutIntent = new Intent(HomeActivity.this, LoginActivity.this);
                startActivity(logoutIntent);
                finish();
            }
        });
}


1 commentaires

Le journal de crash mis ici pour une meilleure compréhension


3 Réponses :


0
votes

Créer une classe AppPreference: -

if (isUserLoggedOut(StartActivity.this)) {
                    //user not logged in
                } else {
                   //User is logged in
                }


2 commentaires

Laissez un commentaire si vous avez une requête ou apprécie la réponse si cela vous aide


Merci! C'était utile. J'ai fait comme vous avez suggéré et ça marche.



0
votes

Ce que vous avez fait est le droit, la seule chose que vous n'avez pas commis vos valeurs de préférence.

Votre fonction ressemblera à ce xxx

Ajouter le Même ligne sur bouton_logout Cliquez sur

En outre, je vous recommanderai de créer une classe de services utilitaires pour les opérations SharedPreference.


0 commentaires

0
votes

Vous devez commettre ou appliquer des modifications apportées dans l'éditeur. Donc, après

        editor.putString("username", username);
        editor.putString("password", password);
        editor.apply(); // or editor.commit()


0 commentaires