我是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);
}
答案 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);
}
希望它对你有所帮助。