2013-07-01 14 views
0

如果我有一个名为“myshared”的shred首选项文件,我可以如何将数据追加到它不覆盖?如何将数据附加到现有的共享首选项文件

enter image description here

我需要登记制度,我想保存每个新用户数据(用户名和密码)使用sharedprefernces不是外部文件我的每个新用户的数据总是问题是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); 


        } 


       } 

      }); 

} 

} 
+0

你能澄清你的意图吗? – Blackbelt

+0

我需要做一个注册系统,我想保存每个新用户数据(用户名和密码)使用sharedprefernces不是外部文件我的问题与每个新的用户数据总是myshared.xml被覆盖:( – Akari

+0

所以多个用户可以注册一个帐户在同一设备上? – Blackbelt

回答

1

我查看了SharedPreferences文档,我找到了一个选项。

您可以使用getStringSet()Set<String>添加到首选项,因此您必须将一组用户名和密码保存到SharedPreferences,以便您可以拥有登录历史记录。

编辑: 由于要为每个用户创建一个偏好,然后保存到首选项文件之前,你得到的参数文件的用户名,因此,如果用户名不为空,那么你已经有了偏好文件和用户是重复的。

+0

我更新了我的文章..你能看到我的新问题吗 – Akari

0

与名称作为用户名创建单独的文件,让您存储每个用户的详细信息:

创作:

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是另一个好选项。