Android Can';是否在AsyncTask中设置SharedReference?
我正在尝试在asynctask中设置共享首选项,但它似乎不起作用。谁能帮我一下吗。我已经试过10亿次了 按钮/异步代码:Android Can';是否在AsyncTask中设置SharedReference?,android,android-asynctask,sharedpreferences,Android,Android Asynctask,Sharedpreferences,我正在尝试在asynctask中设置共享首选项,但它似乎不起作用。谁能帮我一下吗。我已经试过10亿次了 按钮/异步代码: button.setOnClickListener(new OnClickListener(){ private ProgressDialog cancelDialog = null; int valid; @Override public void onClick(View arg0) {
button.setOnClickListener(new OnClickListener(){
private ProgressDialog cancelDialog = null;
int valid;
@Override
public void onClick(View arg0) {
new AsyncTask<Void, Void, Void>() {
@Override
protected Void doInBackground(Void... params) {
valid = api.validateLogin(username.getText().toString(), password.getText().toString());
return null;
}
@Override
protected void onPreExecute() {
cancelDialog = new ProgressDialog(LoginActivity.this);
cancelDialog.setMessage("Validating Username & Password");
cancelDialog.show();
super.onPreExecute();
}
@Override
protected void onPostExecute(Void result){
cancelDialog.cancel();
if(valid == 2){
SharedPreferences savedSession = getApplicationContext().getSharedPreferences("xdaeaf", Activity.MODE_PRIVATE);
savedSession.edit().putString("username", username.getText().toString());
try {
String passtext = MCrypt.bytesToHex(mcrypt.encrypt(password.getText().toString()));
savedSession.edit().putString("password", ""+passtext);
savedSession.edit().commit();
} catch (Exception e) {
e.printStackTrace();
//TODO:
}
//TODO:
}else{
//TODO:
}
super.onPostExecute(result);
}
}.execute();
}
});
我检查了是否将空变量传递给putSTring,但它将值传递给putSTring。这只是不节省。当我重新运行访问代码时,它只打印出“Username:password:”。尝试重新访问时,值为空。如果每次调用
savedSession.edit()
时,它都会返回不同的对象,那么必须对每个对象调用commit
方法来保存值
因此,像这样获取一个编辑器的实例
Editor editor = savedSession.edit();
然后使用此引用保存值
你的代码应该是
Editor editor = savedSession.edit();
editor.putString("username", username.getText().toString());
String passtext = MCrypt.bytesToHex(mcrypt.encrypt(password.getText().toString()));
editor.putString("password", ""+passtext);
editor.commit();
如果每次调用savedSession.edit()
时都会返回不同的对象,那么必须对每个对象调用commit
方法来保存值
因此,像这样获取一个编辑器的实例
Editor editor = savedSession.edit();
然后使用此引用保存值
你的代码应该是
Editor editor = savedSession.edit();
editor.putString("username", username.getText().toString());
String passtext = MCrypt.bytesToHex(mcrypt.encrypt(password.getText().toString()));
editor.putString("password", ""+passtext);
editor.commit();
每次调用edit()都会返回一个新的编辑器实例。因此,你得到一个实例,做一个改变,让它自己去做。然后,您将获得第二个参数,并在没有更改的情况下提交该参数,这不会导致首选项中的值更改
Editor editor = savedSession.edit();
editor.putString("username", username.getText().toString());
editor.putString("password", ""+passtext);
editor.commit();
每次调用edit()都会返回一个新的编辑器实例。因此,你得到一个实例,做一个改变,让它自己去做。然后,您将获得第二个参数,并在没有更改的情况下提交该参数,这不会导致首选项中的值更改
Editor editor = savedSession.edit();
editor.putString("username", username.getText().toString());
editor.putString("password", ""+passtext);
editor.commit();
你从不提交你的编辑器。在您提交编辑器之前,它不会被保存。只是想知道,这个“xdaeaf”SharedReferences是什么?你是想出这个名字的还是从别的地方用的?你从来没有提交过你的编辑器。在您提交编辑器之前,它不会被保存。只是想知道,这个“xdaeaf”SharedReferences是什么?这个名字是你想出来的还是你从别的地方用的?