如何在android中创建多个用户注册和登录活动?

问题描述 投票:0回答:2

我使用共享首选项在Android中进行了注册和登录活动。用户可以成功注册和登录。但我的问题是当新用户注册时,它会删除以前用户的注册详细信息。

这是我的注册页面:

 public class Registration extends Activity implements 
  View.OnClickListener 
  {
  SharedPreferences pref;
  Editor editor;
  TextView btn_registration , btn_formlogin;
  EditText et_name, et_pass, et_email , et_phone ;
  ImageView btn_upload ;
  private static final int PICK_IMAGE_REQUEST = 0;
  private Uri mImageUri;

  SessionManager session;

  @Override
  protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_registration);


    et_name = (EditText) findViewById(R.id.edt_Name);
    et_pass = (EditText) findViewById(R.id.edt_userPassword);
    et_email = (EditText) findViewById(R.id.edt_userEmail);
    et_phone = (EditText) findViewById(R.id.edt_Phone);
    btn_registration = (TextView) findViewById(R.id.btn_registration);
    btn_formlogin = (TextView) findViewById(R.id.btn_formlogin);
    btn_upload = (ImageView)findViewById(R.id.img_upload);

    Map<String,String> values = new HashMap<String,String>();
    AppCompatDelegate.setCompatVectorFromResourcesEnabled(true);
    btn_upload.setOnClickListener(this);
    SharedPreferences preference = 
    PreferenceManager.getDefaultSharedPreferences(this);
    final String mImageUri = preference.getString("image", null);
    btn_upload.setImageResource(R.drawable.adduser);

    // creating an shared Preference file for the information to be stored
    // first argument is the name of file and second is the mode, 0 is 
    private mode

    pref = getSharedPreferences("USER_CREDENTIALS", 0);
    // get editor to edit in file
    editor = pref.edit();


    // the tap of button we will fetch the information from four edittext
     btn_registration.setOnClickListener(new View.OnClickListener() {

        @Override
        public void onClick (View v) {


            boolean validName = true;
            boolean validPass = true;
            boolean validPhone = true;
            boolean validEmail = true;

            String name = et_name.getText().toString();
            String email = et_email.getText().toString();
            String pass = et_pass.getText().toString();
            String phone = et_phone.getText().toString();


            if (isEmpty(et_name)) {
                et_name.setError("Enter the Name");
                validName = false;

            }


            if (isEmpty(et_pass)) {
                et_pass.setError("Password can't be null");
                validPass = false;

            }

            if (isEmail(et_email) == false) {
                et_email.setError("Enter valid email");
                validEmail = false;

            }

            if (isValidMobile(et_phone) == false) {
                validPhone = false;

            }


            final String required_email= pref.getString("Email",null);
            final String required_phone=pref.getString("Phone",null);

            if(et_email.equals(required_email)){
                validEmail = true;
            }
            else if(et_phone.equals(required_phone)){
                validPhone = true;

            }


            if (validName && validPass && validPhone && validEmail){

                // as now we have information in string. Lets stored them 
                with the help of editor
                editor.putString("Name" , name );
                editor.putString("Email", email);
                editor.putString("Password", pass);
                editor.putString("Phone", phone);
                editor.putString("image", String.valueOf(mImageUri));

                editor.commit();   // commit the values

                Toast.makeText(Registration.this, "Registration 
                Successful", Toast.LENGTH_LONG).show();

                session = new SessionManager(getApplicationContext());

                session.createLoginSession(name, email, mImageUri);

                // after saving the value open next activity
                Intent ob = new Intent(Registration.this, 
                DashBoard.class);
                startActivity(ob);

            }

             else{
                Toast.makeText(Registration.this, "Registration 
              unsuccessful! Please retry.", Toast.LENGTH_LONG).show();

             }
           }
          });

我只是想知道如何使用共享首选项文件注册多个用户?

android login sharedpreferences registration android-multiple-users
2个回答
1
投票

如果您将拥有多个用户,则最好使用数据库(sqlite)而不是共享首选项。


1
投票

在共享首选项中,如果要在设备中保存多个用户,则只能在对象中保存单个值,然后可以使用会议室数据库在设备中存储多个用户详细信息。共享首选项只能用于单个信息,或者如果要在共享首选项中存储多个值,则可以将arrayList存储在共享首选项中。

以共享首选项保存数组列表: -

 private static SharedPreferences mPrefs;
 private static SharedPreferences.Editor mPrefsEditor;

 public static Set<String> getCamEval(Context ctx) {
        mPrefs = PreferenceManager.getDefaultSharedPreferences(ctx);
        return mPrefs.getStringSet("sdk_camEval", null);
    }

 public static void setCamEval(Context ctx, ArrayList<String> value) {
        mPrefs = PreferenceManager.getDefaultSharedPreferences(ctx);
        mPrefsEditor = mPrefs.edit();
        Set<String> set = new HashSet<>();
        set.addAll(value);
        mPrefsEditor.putStringSet("sdk_camEval", set);
        mPrefsEditor.commit();
    } 
© www.soinside.com 2019 - 2024. All rights reserved.