Android 如何将数据附加到现有共享首选项文件
如果我有一个名为“myshared”的切碎首选项文件,我如何才能将数据附加到它而不是覆盖它Android 如何将数据附加到现有共享首选项文件,android,Android,如果我有一个名为“myshared”的切碎首选项文件,我如何才能将数据附加到它而不是覆盖它 我需要建立一个注册系统,我想使用SharedPreferences而不是外部文件保存每个新用户数据(用户名和密码)。我与每个新用户数据的问题总是myshared.xml被覆盖 我已经回复了我的帖子: 我试图解决这个问题,每次都用不同的Id创建一个新的xml文件这是我的 编辑我的帖子: package com.example.task_8; import java.io.File; import an
我需要建立一个注册系统,我想使用SharedPreferences而不是外部文件保存每个新用户数据(用户名和密码)。我与每个新用户数据的问题总是myshared.xml被覆盖 我已经回复了我的帖子: 我试图解决这个问题,每次都用不同的Id创建一个新的xml文件这是我的 编辑我的帖子:
package com.example.task_8;
import java.io.File;
import android.app.Activity;
import android.app.AlertDialog;
import android.content.Intent;
import android.content.SharedPreferences;
import android.text.Editable;
import android.text.TextWatcher;
import android.util.Log;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;
public class Ac_3 extends Activity {
Button save;
EditText userName,password;
String name,pass,oldUser,oldpass,oldId;
Intent i;
@Override
protected void onStart() {
// TODO Auto-generated method stub
super.onStart();
setContentView(R.layout.ac_3);
save= (Button)findViewById(R.id.button1);
userName=(EditText) findViewById(R.id.editText1);
password=(EditText) findViewById(R.id.editText2);
/////////////////////////////////////////////////
i = getIntent();
TextWatcher listener = new TextWatcher() {
@Override
public void onTextChanged(CharSequence s, int start, int before, int count) {
}
@Override
public void beforeTextChanged(CharSequence s, int start, int count, int after) {
}
@SuppressWarnings("deprecation")
@Override
public void afterTextChanged(Editable s) {
name= userName.getText().toString();
pass= password.getText().toString();
}
};
password.addTextChangedListener(listener);
userName.addTextChangedListener(listener);
save.setOnClickListener( new View.OnClickListener() {
@Override
public void onClick(View v) {
// TODO Auto-generated method stub
File f=new File("/data/data/com.example.task_8/shared_prefs/"+name+".xml");
if(f.exists())
{
AlertDialog alertDialog = null;
alertDialog = new AlertDialog.Builder(Ac_3.this).create();
alertDialog.setTitle("error msg");
alertDialog.setMessage("This user name already exist , try another one");
alertDialog.show();
}
else
{
SharedPreferences sp = getSharedPreferences("myshared"+name, 0);
SharedPreferences.Editor spe = sp.edit();
spe.putString("userName",name);
spe.putString("password",pass);
spe.commit();
i = new Intent(getApplicationContext(), MainActivity.class);
startActivity(i);
}
}
});
}
}
我查看了SharedReferences文档,为您找到了一个选项 您可以使用将
Set
添加到首选项中,因此您必须将一组用户名和密码保存到SharedReferences,这样您就可以拥有登录历史记录
编辑:
由于您正在为每个用户创建首选项,因此在保存到首选项文件之前,您将获得首选项文件的用户名,因此,如果用户名不为空,则表示您已经拥有首选项文件,并且该用户是重复的。创建单独的文件,将名称作为用户名,允许您存储有关每个用户的更多信息: 创建:
String userName = "user_1";
String password = "passwd";
String hash = doHashPassword(password);
SharedPreferences sp = getSharedPreferences(userName,MODE_PRIVATE);
sp.edit().putString("pass",hash).commit();
授权:
String userName = "user_1";
String password = "passwd";
SharedPreferences sp = getSharedPreferences(userName,MODE_PRIVATE);
String hash = sp.getString("pass",null);
if(hash != null && hash.equals(doHashPassword(password))){
//--login success
}else {
//--access denied
}
SQLite是另一个很好的选择。你能澄清你的意图吗?我需要建立一个注册系统,我想使用SharedPreferences而不是外部文件保存每个新用户数据(用户名和密码)。我与每个新用户数据的问题总是myshared.xml被覆盖:(因此,多个用户可以在同一台设备上注册一个帐户?我想你应该如何使用ContentProvider如果你必须使用共享首选项,你必须为login1、2、3创建各种id,然后通过并检查你的代码中是否有。)