记住我在android中不起作用的功能

时间:2013-10-21 06:52:43

标签: android login

我是Android开发的新手。在我的代码中,我使用共享首选项来存储和检索用户名和密码。我通过我研究过的教程实现了这一点。我创建了一个方法,即remember()并在调用时调用它点击方法点击我的复选框。但是当我点击复选框并运行我的程序时,它很快就会停止。

这是我的代码。任何人都可以找到我错误的地方吗?

public void onClick(View v) {
            if(chkbx.isChecked())
            remember();

            final TextView username =(TextView)findViewById(R.id.username);
            final TextView password =(TextView)findViewById(R.id.password);
            String uname = username.getText().toString();
            String pass =  password.getText().toString();


               String storedPassword=loginDataBaseAdapter.getSinlgeEntry(uname);
            if(!uname.equals("")  && !pass.equals("")&&pass.equals(storedPassword))
                startActivity(new Intent(LoginActivity.this,welcomeActivity.class).putExtra("usr",(CharSequence)uname));
             else 

                Toast.makeText(LoginActivity.this,"Invalid UserName or Password", Toast.LENGTH_LONG).show();



        }
    });

这是记住方法

private void remember(){

        final TextView username =(TextView)findViewById(R.id.username);
        final TextView password =(TextView)findViewById(R.id.password);
        String uname = username.getText().toString();
        String pass =  password.getText().toString();
        SharedPrefManager.SetName(uname); 
            SharedPrefManager.SetName(pass); 
         SharedPrefManager.StoreToPref();

        SharedPrefManager.LoadFromPref(); 
         String usrname,pswd;
        usrname = SharedPrefManager.GetName();
       pswd= SharedPrefManager.GetPass();


       EditText tv = null;
        tv = (EditText)findViewById(R.id.username);
        tv.setText(usrname);
        tv = (EditText)findViewById(R.id.password);
        tv.setText(pswd);

    }

1 个答案:

答案 0 :(得分:0)

使用以下代码记住我的功能,它适用于我。 首先创建一个如下所示的类

package com.example.fitnessapp;

import android.content.Context;
import android.content.Intent;
import android.content.SharedPreferences;
import android.content.SharedPreferences.Editor;

public class SessionManager {

    SharedPreferences pref;
    Editor editor;
    Context context;

    int PRIVATE_MODE = 0;

    public static final String PREF_NAME = "FitPref";
    private static final String IS_LOGIN = "IsLoggedIn";
    public static final String KEY_USERNAME = "username";
    public static final String KEY_PASSWORD = "password";
    private boolean isChecked = false;

    public SessionManager(Context context) {
        this.context = context;
        pref = context.getSharedPreferences(PREF_NAME, PRIVATE_MODE);
        editor = pref.edit();
    }

    public void createLoginSession(String username, String password) {
        editor.putBoolean(IS_LOGIN, true);

        editor.putString(KEY_USERNAME, username);
        editor.putString(KEY_PASSWORD, password);
        if (isChecked == true) {
            editor.putBoolean("isChecked", true);
        } else {
            editor.putBoolean("isChecked", false);
        }
        editor.commit();
    }

    public void createLoginSession(String username, String password, boolean remember) {
        editor.putBoolean(IS_LOGIN, true);

        editor.putString(KEY_USERNAME, username);
        editor.putString(KEY_PASSWORD, password);
        editor.putBoolean("remember", remember);
        editor.commit();
    }

    public void checkLogin() {
        if (!this.isLoggedIn()) {
            Intent i = new Intent(context, MainActivity.class);

            i.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
            i.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);

            context.startActivity(i);
        }
    }

    public boolean isLoggedIn() {
        return pref.getBoolean(IS_LOGIN, false);
    }
}

在您的MainActivity中使用以下代码来存储用户名和密码。

if (remember.isChecked() == true) {
    sm.createLoginSession(user, pass, true);
   } 

要检索回用户名和密码,请使用以下代码。

SharedPreferences pref = MainActivity.this.getSharedPreferences(SessionManager.PREF_NAME, 0);
        boolean loggedIn = pref.getBoolean("remember", false);
        if (loggedIn == true) {
            remember.setChecked(true);
            String user = pref.getString(SessionManager.KEY_USERNAME, "");
            String pass = pref.getString(SessionManager.KEY_PASSWORD, "");

            username.setText(user);
            password.setText(pass);
        }

希望它对你有所帮助。