2013-07-01 4 views
0

Если у меня есть файл предпочтений shred, называемый «myshared», как я могу добавить данные к нему, не переписывать?Как добавить данные в существующий файл общих предпочтений

enter image description here

мне нужно сделать систему регистрации, и я хочу, чтобы сохранить каждый новые пользовательские данные (имя пользователя и пароль) с помощью sharedprefernces не внешние файлы моя проблема с каждым новым пользовательских данных всегда myshared.xml переписывается I «ве ответили на мой пост:

Я попытался решить эту проблему, создав новый XML-файл каждый раз с разными Id это мой

Редактировать Мои сообщения:

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 и нашел для вас один вариант.

Вы можете добавить Set<String> к настройкам, используя getStringSet(), поэтому вам нужно будет сохранить набор имен пользователей и паролей в SharedPreferences, чтобы вы могли иметь историю входа в систему.

EDIT: Поскольку вы создаете предпочтение для каждого пользователя, то перед сохранением в файле предпочтений вы получите имя пользователя для файла предпочтений, поэтому, если имя пользователя не равно null, то у вас уже есть файл предпочтений и пользователь является дубликатом.

+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 является еще одним хорошим вариант.

Смежные вопросы