Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/313.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 注册用户添加的字段_Java_Android_Firebase_Firebase Realtime Database_Firebase Authentication - Fatal编程技术网

Java 注册用户添加的字段

Java 注册用户添加的字段,java,android,firebase,firebase-realtime-database,firebase-authentication,Java,Android,Firebase,Firebase Realtime Database,Firebase Authentication,因此,我正在尝试为我的android应用程序注册一个用户,目前它使用Firebase身份验证通过电子邮件和密码进行注册。但我正在尝试添加一个姓名和电话字段来注册 Registration.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { // register name/phone/radiogroup

因此,我正在尝试为我的android应用程序注册一个用户,目前它使用Firebase身份验证通过电子邮件和密码进行注册。但我正在尝试添加一个姓名和电话字段来注册

Registration.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {

            // register name/phone/radiogroup


            final String name = nameField.getText().toString();
            final String phone = phoneField.getText().toString();
            final String email = Email.getText().toString();
            final String password = Password.getText().toString();

            if (TextUtils.isEmpty(name)) {
                Toast.makeText(TradesmanLoginActivity.this,
                        "Please enter your Name...", Toast.LENGTH_SHORT).show();
            }

            if (TextUtils.isEmpty(phone)) {
                Toast.makeText(TradesmanLoginActivity.this,
                        "Please enter your Phone Number...", Toast.LENGTH_SHORT).show();
            }

            if (TextUtils.isEmpty(email)) {
                Toast.makeText(TradesmanLoginActivity.this,
                        "Please enter your Email Address...", Toast.LENGTH_SHORT).show();
            }

            if (TextUtils.isEmpty(password)) {
                Toast.makeText(TradesmanLoginActivity.this,
                        "Please enter a Password...", Toast.LENGTH_SHORT).show();
            } else {
                loadingBar.setTitle("Tradesman Registration");
                loadingBar.setMessage("Please wait while we check your credentials...");
                loadingBar.show();

                Auth.createUserWithEmailAndPassword(email, password).addOnCompleteListener(TradesmanLoginActivity.this, new OnCompleteListener<AuthResult>() {
                    @Override
                    public void onComplete(@NonNull Task<AuthResult> task) {
                        if (!task.isSuccessful()) {
                            Toast.makeText(TradesmanLoginActivity.this, "sign up error", Toast.LENGTH_SHORT).show();
                            loadingBar.dismiss();
                        } else {
                            Toast.makeText(TradesmanLoginActivity.this, "Tradesman Registration Successful!", Toast.LENGTH_SHORT).show();
                            loadingBar.dismiss();

                            String name = nameField.getText().toString();
                            String phone= phoneField.getText().toString();

                            HashMap<String,String> user=new HashMap<>();
                            user.put("Name",name);
                            user.put("Phone",phone);


                            String user_id = Auth.getCurrentUser().getUid();
                            DatabaseReference current_user_db = FirebaseDatabase.getInstance().getReference().child("Users").child("Tradesman").child(user_id).child("Name");
                            current_user_db.setValue(email);
                        }
                    }
                });
            }
        }
    });
我已经创建了字段等,我只是在努力将姓名和电话输入firebase数据库


目前,它注册一个用户,并为用户的电子邮件设置名称。我想将姓名和电话存储为注册时输入的用户ID的子项,而不仅仅是电子邮件。如果您想在/Users/Tradesman/$uid下创建一个包含用户姓名和电话号码的节点,则如下所示:

Auth.createUserWithEmailAndPassword(email, password).addOnCompleteListener(TradesmanLoginActivity.this, new OnCompleteListener<AuthResult>() {
    @Override
    public void onComplete(@NonNull Task<AuthResult> task) {
        if (!task.isSuccessful()) {
            Toast.makeText(TradesmanLoginActivity.this, "sign up error", Toast.LENGTH_SHORT).show();
            loadingBar.dismiss();
        } else {
            Toast.makeText(TradesmanLoginActivity.this, "Tradesman Registration Successful!", Toast.LENGTH_SHORT).show();
            loadingBar.dismiss();

            String name = nameField.getText().toString();
            String phone= phoneField.getText().toString();

            HashMap<String,String> user=new HashMap<>();
            user.put("Name",name);
            user.put("Phone",phone);

            String user_id = Auth.getCurrentUser().getUid();
            DatabaseReference current_user_db = FirebaseDatabase.getInstance().getReference().child("Users/Tradesman").child(user_id);
            current_user_db.setValue(user);
        }
    }
});

最大的变化是,您只在其中写入电子邮件,上面的更新会写入包含姓名和电话号码的整个地图。

如果您想在/Users/Tradesman/$uid下创建一个包含用户姓名和电话号码的节点,如下所示:

Auth.createUserWithEmailAndPassword(email, password).addOnCompleteListener(TradesmanLoginActivity.this, new OnCompleteListener<AuthResult>() {
    @Override
    public void onComplete(@NonNull Task<AuthResult> task) {
        if (!task.isSuccessful()) {
            Toast.makeText(TradesmanLoginActivity.this, "sign up error", Toast.LENGTH_SHORT).show();
            loadingBar.dismiss();
        } else {
            Toast.makeText(TradesmanLoginActivity.this, "Tradesman Registration Successful!", Toast.LENGTH_SHORT).show();
            loadingBar.dismiss();

            String name = nameField.getText().toString();
            String phone= phoneField.getText().toString();

            HashMap<String,String> user=new HashMap<>();
            user.put("Name",name);
            user.put("Phone",phone);

            String user_id = Auth.getCurrentUser().getUid();
            DatabaseReference current_user_db = FirebaseDatabase.getInstance().getReference().child("Users/Tradesman").child(user_id);
            current_user_db.setValue(user);
        }
    }
});

最大的变化是,您只在其中写入电子邮件,而上面的更新将使用姓名和电话号码写入整个地图。

您将错误的值设置为setValue。换成这个

 DatabaseReference current_user_db = FirebaseDatabase.getInstance().getReference().child("Users").child("Tradesman").child(user_id);
 current_user_db.setValue(user);

您在setValue中输入了错误的值。换成这个

 DatabaseReference current_user_db = FirebaseDatabase.getInstance().getReference().child("Users").child("Tradesman").child(user_id);
 current_user_db.setValue(user);

你到底在挣扎什么?是不是有些东西没有按你期望的方式工作?请编辑问题的更多细节,这样我们就知道问题出在哪里了。我正在努力在注册时添加额外的字段。据我所知,目前它会创建一个用户ID子项,然后在其中创建一个子项“名称”以及电子邮件。我希望能够注册一个用户,并将其姓名/电话添加为唯一IDY的子项。您必须明确解释您希望最终结果是什么,以及您现在正在做什么,这不是您所期望的。请编辑问题以添加详细信息。因此,我希望最终结果是:我使用电子邮件/密码身份验证注册用户。这将在实时数据库中为用户创建一个唯一的ID,并存储用户作为子用户输入的姓名和电话。它当前存储用户输入的电子邮件作为名称,而我没有电话儿童字段你到底在忙什么?是不是有些东西没有按你期望的方式工作?请编辑问题的更多细节,这样我们就知道问题出在哪里了。我正在努力在注册时添加额外的字段。据我所知,目前它会创建一个用户ID子项,然后在其中创建一个子项“名称”以及电子邮件。我希望能够注册一个用户,并将其姓名/电话添加为唯一IDY的子项。您必须明确解释您希望最终结果是什么,以及您现在正在做什么,这不是您所期望的。请编辑问题以添加详细信息。因此,我希望最终结果是:我使用电子邮件/密码身份验证注册用户。这将在实时数据库中为用户创建一个唯一的ID,并存储用户作为子用户输入的姓名和电话。它当前存储用户输入的电子邮件作为名称,我没有一个电话子字段Thankyou有意义,我知道setValue中的电子邮件有问题,但不知道我使用MapThankyou是否正确有意义,我知道setValue中的电子邮件有问题,但不知道我使用MapThankyou是否正确,有意义:谢谢,有意义: