如何在android中共享首选项中存储多个值?

时间:2014-04-14 06:09:28

标签: android

文件名= MainActivity.java

公共类MainActivity扩展了Activity {

TextView textView1;
EditText editText1,editText2;
Button button1,button2;
public static final String Default = "NA";

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);
    textView1 = (TextView)findViewById(R.id.textViewSignup);        
    textView1.setOnClickListener(new OnClickListener() {

        @Override
        public void onClick(View arg0) {
            // TODO Auto-generated method stub
        Intent i = new Intent(MainActivity.this,Sign_up.class);
        startActivity(i);
        }
    });
    editText1=(EditText)findViewById(R.id.editText1);
    editText2=(EditText)findViewById(R.id.editText2);
    button1 =(Button)findViewById(R.id.button1);
    button2 =(Button)findViewById(R.id.button2);


    button1.setOnClickListener(new OnClickListener() {

        @Override
        public void onClick(View arg0) {
            // TODO Auto-generated method stub
            SharedPreferences preferences = getSharedPreferences("Login Credentials",MODE_PRIVATE);

            String firstname=preferences.getString("Name",Default );
            String email= preferences.getString("Email",Default );
            String password=preferences.getString("Password", Default);




            if(editText1.getText().toString().equals(firstname)&&
                    editText2.getText().toString().equals(password)){

                Toast.makeText(getApplicationContext(), "Welcome User", Toast.LENGTH_SHORT).show();
        }else
        {
            Toast.makeText(getApplicationContext(), "Wrong User", Toast.LENGTH_SHORT).show();

        }
            }
    });
    button2.setOnClickListener(new OnClickListener() {

        @Override
        public void onClick(View arg0) {
            // TODO Auto-generated method stub
        finish();   
        }
    });



}

第二个文件名= Signup.java

公共类Sign_up扩展MainActivity实现OnClickListener {

   public static final String Default = "MyPrefs" ;


  String name,email,password,confirmpassword;
  EditText et1,et2,et3,et4;
  TextView textView;
  Button button;
  SharedPreferences preferences;
  Editor editor;

@Override
protected void onCreate(Bundle savedInstanceState) {
    // TODO Auto-generated method stub
    super.onCreate(savedInstanceState);
    setContentView(R.layout.sign_up);

    et1 = (EditText)findViewById(R.id.editTextName);
    et2 = (EditText)findViewById(R.id.editEmail);
    et3 = (EditText)findViewById(R.id.editPassword);
    et4 = (EditText)findViewById(R.id.editConPassword);
    button = (Button)findViewById(R.id.buttonSignup);
    textView = (TextView)findViewById(R.id.textViewLoginhere);
    button.setOnClickListener(this);


    textView.setOnClickListener(new OnClickListener() {

        public void onClick(View v) {
            // TODO Auto-generated method stub
            Intent intent = new Intent(Sign_up.this,MainActivity.class);
            startActivity(intent);
        }
    });


}
//public void sharedPrefarence(){


//}
@Override
public void onClick(View arg0) {
    // TODO Auto-generated method stub
    preferences = getSharedPreferences("Login Credentials", MODE_PRIVATE);
    SharedPreferences.Editor editor=preferences.edit();
    //editor = preferences.edit();
    editor.putString("Name", et1.getText().toString());
    editor.putString("Email",et2.getText().toString());
    editor.putString("Password", et3.getText().toString());
    editor.putString("Confirmpassword", et4.getText().toString());
    editor.commit();

    Toast.makeText(getApplicationContext(), "Added Successful",
            Toast.LENGTH_SHORT).show();
}

}

此代码正常工作,但是当我添加新用户时,密钥会被覆盖,这就是为什么它无法存储多个值所以请给我正确的建议

谢谢&问候 勒凯什

4 个答案:

答案 0 :(得分:1)

共享首选项仅存储简单的名称/值对。它们的键名是唯一的,因此当您为“名称”,“电子邮件”,“密码”和“确认密码”添加值时,它将始终覆盖那里的内容。

看起来您需要多组这些字段,因此您可能希望将数据存储在sqllite数据库中。

答案 1 :(得分:0)

您应该尝试使用数据库来存储多个记录。偏好系统按预期工作。

答案 2 :(得分:0)

您需要为每个唯一值共享Prefarence中的唯一键。所以onClick方法要么使逻辑始终用唯一键保存每个用户。

或者另一种方法是,您可以在ArrayList中保存数据,然后在ArrayList中保存sharedPrefarence,并在ArrayList中保存所有用户信息}。保存ArrayList是SharedPrefarence检查this link

您也可以使用sqlite

答案 3 :(得分:0)

在这里我完成了它:

[http://androidopentutorials.com/android-how-to-store-list-of-values-in-sharedpreferences/][1]

在第1.2.2小节中做了很多工作。敏锐地看着它。  您只需下载并导入Google提供的Gson Library,即可完成。