如何存储分步注册数据解析服务器平台?

How to store step by step sign up data to parse server platform?

我正在创建一个应用程序,它将存储任何用户的一些数据,例如,可以存储,用户可以在其中存储文件、照片等。我已经设置了注册选项,用户可以在其中注册并创建一个那里的帐户。现在,我想实现这一点,用户应该逐页输入注册页面,这意味着,点击注册后,activity 将打开,用户将在第一个 activity看到编辑文本和下一步按钮,在编辑文本中用户将输入名称并按下下一步按钮。单击下一步后,第二个 activity 调用,用户可以将 DOB 放入编辑文本中,然后按下一步,第三个 activity 调用,用户可以输入电子邮件,然后下一步,然后第四个 activity 用户可以输入密码并确认密码并按登录,在第 5 个 activity 用户将进入主页,就像在 gmail 应用程序中创建帐户一样。我想要在我的应用程序中使用这样的副本。 为了在服务器中存储注册详细信息,我使用了解析平台服务器,并成功地在我的应用程序上实现了,下面给出的代码在同一页面中显示了所有输入详细信息,所以我怎样才能像我提到的那样将它分成一页一页以上。 这是代码:- 用户点击注册按钮

 EditText edName, edEmail, edPassword, edConfirmPassword;

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

    edName = findViewById(R.id.edName);
    edEmail = findViewById(R.id.edEmail);
    edPassword = findViewById(R.id.edPassword);
    edConfirmPassword = findViewById(R.id.edConfirmPassword);
}

public void signup(View view) { //signup button
    if( TextUtils.isEmpty(edName.getText())){
        edName.setError( "Name is required!" );
    }else if( TextUtils.isEmpty(edEmail.getText())){
        edEmail.setError( "Email is required!" );
    }else if( TextUtils.isEmpty(edPassword.getText())){
        edPassword.setError( "Password is required!" );
    }else if( TextUtils.isEmpty(edConfirmPassword.getText())){
        edConfirmPassword.setError( "Confirm password is required!" );
    }else if(!edPassword.getText().toString().equals(edConfirmPassword.getText().toString())){
        Toast.makeText(SignupActivity.this, "Passwords are not the same!", Toast.LENGTH_LONG).show();
    }else{

        final ProgressDialog progress = new ProgressDialog(this);
        progress.setMessage("Loading ...");
        progress.show();
        ParseUser user = new ParseUser();
        user.setUsername(edEmail.getText().toString().trim());
        user.setEmail(edEmail.getText().toString().trim());
        user.setPassword(edPassword.getText().toString());
        user.put("name", edName.getText().toString().trim());
        user.signUpInBackground(new SignUpCallback() {
            @Override
            public void done(ParseException e) {
                progress.dismiss();
                if (e == null) {
                    Toast.makeText(SignupActivity.this, "Welcome!", Toast.LENGTH_LONG).show();
                    Intent intent = new Intent(SignupActivity.this, HomeActivity.class);
                    startActivity(intent);
                    finish();
                } else {
                    ParseUser.logOut();
                    Toast.makeText(SignupActivity.this, e.getMessage(), Toast.LENGTH_LONG).show();
                }
            }
        });
    }

我认为您可以通过共享首选项来做到这一点。在每个 activity 中,您应该检查输入值是否不等于 null,然后存储数据并通过按钮 onclicklistener 的意图启动下一个 activity。对于密码比较,使用 logic 。 最后 activity 从共享首选项中检索数据并触发登录。

保存名称的数据示例-

if (edName != null) {
                    SharedPreferences pref = PreferenceManager.getDefaultSharedPreferences(getApplicationContext());
                    SharedPreferences.Editor editor = pref.edit();
                    editor.putString("name", edName);
                    editor.commit();

检索数据示例 -

  public String edName;
SharedPreferences defPref = PreferenceManager.getDefaultSharedPreferences(getApplicationContext());
    edName  = defPref.getString("name","");

正如@Zahid 提到的那样,我只是稍微修改了一些代码,这样您的困惑就会清楚。 是的,您可以使用共享首选项而不是任何库或 viewpager。 正如您在上面提到的 @Andrew,您想逐步显示您的 activity 并从每个 activity 中获取数据,最后 activity,用户可以注册。 为此,您必须创建一个 activity,比如 User_name.java,代码将是:- 创建时:

eName = findViewById(R.id.eName);
nextbtn = findViewById(R.id.nextbtn);
String name;


    nextbtn.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            name = eName.getText().toString();
            SharedPreferences sharedPreferences = PreferenceManager.getDefaultSharedPreferences(getApplicationContext());
            SharedPreferences.Editor editor = sharedPreferences.edit();
            editor.putString("Usrname", name);
            editor.apply();
            Toast.makeText(User_Name.this, "Name saved", Toast.LENGTH_SHORT).show();
            Intent intent = new Intent(User_Name.this, Sign_Up.class);
            startActivity(intent);
        }
    });

对于 User_Name.java 创建一个空的 activity 并将 EditText 和一个 Button 放入 xml 文件中,然后,我修改了您上面提到的代码并将名称命名为 Sign_Up.java,因为你没有提到文件名,这里是代码:-

EditText edEmail,edPassword, edConfirmPassword; //edName, 
TextView t1, t2;


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

    t1 = findViewById(R.id.Textname);
    SharedPreferences tx = PreferenceManager.getDefaultSharedPreferences(getApplicationContext());
    String name = tx.getString("Usrname"," ");
    t1.setText(name);

   

   // edName = findViewById(R.id.edName);
    edEmail = findViewById(R.id.edEmail);
    edPassword = findViewById(R.id.edPassword);
    edConfirmPassword = findViewById(R.id.edConfirmPassword);
}

public void signup(View view) {
   /* if( TextUtils.isEmpty(edName.getText())){
        edName.setError( "Name is required!" );
    }else */ if( TextUtils.isEmpty(edEmail.getText())){
        edEmail.setError( "Email is required!" );
    }else if( TextUtils.isEmpty(edPassword.getText())){
        edPassword.setError( "Password is required!" );
    }else if( TextUtils.isEmpty(edConfirmPassword.getText())){
        edConfirmPassword.setError( "Confirm password is required!" );
    }else if(!edPassword.getText().toString().equals(edConfirmPassword.getText().toString())){
        Toast.makeText(SignupActivity.this, "Passwords are not the same!", Toast.LENGTH_LONG).show();
    }else{

        final ProgressDialog progress = new ProgressDialog(this);
        progress.setMessage("Loading ...");
        progress.show();
        ParseUser user = new ParseUser();
        user.setUsername(edEmail.getText().toString().trim());
        user.setEmail(edEmail.getText().toString().trim());
        user.setPassword(edPassword.getText().toString());
        user.put("name", t1.getText().toString().trim());
        user.signUpInBackground(new SignUpCallback() {
            @Override
            public void done(ParseException e) {
                progress.dismiss();
                if (e == null) {
                    Toast.makeText(SignupActivity.this, "Welcome!", Toast.LENGTH_LONG).show();
                    Intent intent = new Intent(SignupActivity.this, HomeActivity.class);
                    startActivity(intent);
                    finish();
                } else {
                    ParseUser.logOut();
                    Toast.makeText(SignupActivity.this, e.getMessage(), Toast.LENGTH_LONG).show();
                }
            }
        });
    }
}

}

按照这个过程创建单独的活动,如电子邮件、DOB 等,并在 Sign_Up.java 中调用它们,就像我在 user_name 中调用的那样。