打开的时候,帐号和密码都有了(已经记住之前输入的),登录之后,进入主界面,按下返回键,重新回到登录界面,但是密码和账户都不见了,只有退出应用后重新打开才会有是什么原因呢?真是百思不得其解
pref= PreferenceManager.getDefaultSharedPreferences(this);//静态方法
//pref=getPreferences(0);
zhanghaoshuru=(EditText)findViewById(R.id.zhanghaoshuru);
mimashuru =(EditText)findViewById(R.id.mimashuru);
denglu=(Button)findViewById(R.id.denglu) ;
jizhumima =(CheckBox)findViewById(R.id.jizhumima);
boolean is=pref.getBoolean("data",false);
if( is){
String a=pref.getString("zhanghaoshuru","");
String b =pref.getString("mimashuru","");
zhanghaoshuru.setText(a);
mimashuru.setText(b);
jizhumima.setChecked(true);
}
else{}
denglu.setOnClickListener(new View.OnClickListener() {
@SuppressLint("ShowToast")
@Override
public void onClick(View view) {
String a=zhanghaoshuru.getText().toString();
String b=mimashuru.getText().toString();
if(a.trim().equals("admin")&&b.trim().equals("admin")){
editor=pref.edit();
if(jizhumima.isChecked()){
editor.putBoolean("data",true) ;
editor.putString( "zhanghaoshuru" , a );
editor.putString( "mimashuru" , b );
}
else {
editor.putBoolean("data",false) ;
editor.clear();
}editor.apply();
Intent intent=new Intent(denglumima.this,MainActivity.class);
startActivity(intent);
https://www.cnblogs.com/liangstudyhome/archive/2014/07/04/3823601.html
我刚刚试了下,没有复现这个问题。
可以试下我的,在onCreate里面调用 getUserInfo,在登录的时候调用 saveUserInfo
在oncreate最前面初始化一下 SharedPreferencesUtil.getInstance(this);
private void getUserInfo(){
SharedPreferencesUtil sharedPreferencesUtil = SharedPreferencesUtil.getInstance().getSharePreference("loginInfo");
et_name.setText(sharedPreferencesUtil.getString("name",""));
et_password.setText(sharedPreferencesUtil.getString("password",""));
}
private void saveUserInfo(){
SharedPreferencesUtil sharedPreferencesUtil = SharedPreferencesUtil.getInstance().getSharePreference("loginInfo");
sharedPreferencesUtil.putString("name",et_name.getText().toString());
sharedPreferencesUtil.putString("password",et_password.getText().toString());
}
public class SharedPreferencesUtil {
@SuppressLint("StaticFieldLeak")
private static SharedPreferencesUtil instance;
private Context context;
private SharedPreferences sharedPreferences;
private SharedPreferences.Editor editor;
public static SharedPreferencesUtil getInstance(Context context) {
if(instance == null){
instance = new SharedPreferencesUtil(context);
}
return instance;
}
public static SharedPreferencesUtil getInstance(){
return instance;
}
private SharedPreferencesUtil(Context context) {
this.context = context;
modifySharePreferenceDir();
}
@SuppressLint("CommitPrefEdits")
public SharedPreferencesUtil getSharePreference(String dataName){
this.sharedPreferences = context.getSharedPreferences(dataName, Activity.MODE_PRIVATE);
this.editor = sharedPreferences.edit();
return instance;
}
/**
* 将存储位置暴露到指定位置 FileUtil.getInstance().getStoragePath()
*/
private void modifySharePreferenceDir(){
if(Environment.getExternalStorageState().equals(Environment.MEDIA_MOUNTED)) {
try {
Field field;
field = ContextWrapper.class.getDeclaredField("mBase");
field.setAccessible(true);
Object obj = field.get(context);
field = obj.getClass().getDeclaredField("mPreferencesDir");
field.setAccessible(true);
File file = new File(FileUtil.getInstance().getStoragePath());
field.set(obj, file);
} catch (NoSuchFieldException | IllegalAccessException | IllegalArgumentException e) {
e.printStackTrace();
}
}
else{
ZToast.getInstance().show("路径获取失败");
}
}
public void putInt(String key,int value){
editor.putInt(key,value);
editor.commit();
}
public void putString(String key,String value){
editor.putString(key,value);
editor.commit();
}
public void putBoolean(String key,boolean value){
editor.putBoolean(key,value);
editor.commit();
}
public int getInt(String key,int defValue){
return sharedPreferences.getInt(key,defValue);
}
public String getString(String key,String defValue){
return sharedPreferences.getString(key,defValue);
}
public Boolean getBoolean(String key,Boolean defValue){
return sharedPreferences.getBoolean(key,defValue);
}
public void removeData(String key){
editor.remove(key);
editor.commit();
}
public Map<String, ?> getAllValue(){
return sharedPreferences.getAll();
}
}
登录完成后跳转到主界面的同时应该手动finish登录页面吧,要不按返回键时会回到登录页面的