Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/350.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/EmptyTag/163.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 Firebase Android错误:Can';t为参数传递null';路径字符串';在儿童时期_Java_Android_Firebase_Firebase Realtime Database_Mobile - Fatal编程技术网

Java Firebase Android错误:Can';t为参数传递null';路径字符串';在儿童时期

Java Firebase Android错误:Can';t为参数传递null';路径字符串';在儿童时期,java,android,firebase,firebase-realtime-database,mobile,Java,Android,Firebase,Firebase Realtime Database,Mobile,当我从注册表单在firebase上创建新用户时,出现以下错误: java.lang.NullPointerException:无法为child()中的参数“pathString”传递null 我在谷歌和YouTube上搜索了这个错误,但没有找到适合我的程序的内容 以下是我在SignUpActivity.java上的部分代码: final EditText email = findViewById(R.id.email_address); final EditText displa

当我从注册表单在firebase上创建新用户时,出现以下错误:

java.lang.NullPointerException:无法为child()中的参数“pathString”传递null

我在谷歌和YouTube上搜索了这个错误,但没有找到适合我的程序的内容

以下是我在SignUpActivity.java上的部分代码:

    final EditText email = findViewById(R.id.email_address);
    final EditText display_name = findViewById(R.id.display_name);
    final EditText password = findViewById(R.id.pass_sign_up);
    final EditText comfirm_pass = findViewById(R.id.comfirm_pass);
    final Button submit = findViewById(R.id.submit_btn_signup);
    final TextView signin = findViewById(R.id.textView8);
    final FirebaseAuth mAuth = FirebaseAuth.getInstance();
    final String[] error = new String[1];
    final ProgressBar loading_icon = findViewById(R.id.progressBar2);


    // hide loading icon \\
    loading_icon.setVisibility(View.GONE);

    signin.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            Intent intent = new Intent(SignupActivity.this,MainActivity.class);
            startActivity(intent);
        }
    });

    submit.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            loading_icon.setVisibility(View.VISIBLE);

            String email_input = email.getText().toString();
            String display_name_input = display_name.getText().toString();
            String password_input = password.getText().toString();
            String comfirm_pass_input = comfirm_pass.getText().toString();

            if (email_input.isEmpty() || display_name_input.isEmpty() || password_input.isEmpty() || comfirm_pass_input.isEmpty()){
                error[0] = "Please fill all the values and try again";
                Toast.makeText(SignupActivity.this, error[0], Toast.LENGTH_LONG).show();
                loading_icon.setVisibility(View.GONE);
            }else{
                if (!password_input.equals(comfirm_pass_input)){
                    error[0] = "passwords do not match";
                    Toast.makeText(SignupActivity.this, error[0], Toast.LENGTH_LONG).show();
                    loading_icon.setVisibility(View.GONE);
                }else{
                    mAuth.createUserWithEmailAndPassword(email_input,password_input).addOnCompleteListener(new OnCompleteListener<AuthResult>() {
                        @Override
                        public void onComplete(@NonNull @NotNull Task<AuthResult> task) {
                            if (task.isSuccessful()){
                                finish();
                                // set display name for user \\
                                FirebaseUser user = FirebaseAuth.getInstance().getCurrentUser();
                                UserProfileChangeRequest profileUpdates = new UserProfileChangeRequest.Builder()
                                        .setDisplayName(display_name_input).build();
                                user.updateProfile(profileUpdates);

                                DatabaseReference mRef = FirebaseDatabase.getInstance().getReference();

                                mRef.addValueEventListener(new ValueEventListener(){
                                    @Override
                                    public void onDataChange(@NotNull DataSnapshot dataSnapshot){

                                        // Get the max_user_id to set the main user id and create the user on Firebase real-time DB \\
                                        String maxUserId = dataSnapshot.child("max_user_id").getValue().toString();
                                        int maxUserIdToInt = Integer.parseInt(maxUserId);
                                        int userId = maxUserIdToInt+1;
                                        newUserId = String.valueOf(userId);
                                        mRef.child("users").child(newUserId).child("name").setValue(display_name_input);
                                    }

                                    @Override
                                    public void onCancelled(@NotNull DatabaseError databaseError){
                                        Toast.makeText(SignupActivity.this,"error: " + databaseError, Toast.LENGTH_LONG).show();
                                    }
                                });

                                mRef.child("users").child(newUserId);
                                

                                Intent intent = new Intent(SignupActivity.this,HomeActivity.class);
                                startActivity(intent);
                            }else{
                                loading_icon.setVisibility(View.GONE);
                                error[0] = "failed to sign up, the email address aleready exist or the password lenght is lower than 6 characters";
                                Toast.makeText(SignupActivity.this, error[0], Toast.LENGTH_LONG).show();
                            }
                        }
                    });
                }
            }
        }
    });

}
final EditText email=findviewbyd(R.id.email\u地址);
最终编辑文本显示\u名称=findViewById(R.id.display\u名称);
最终编辑文本密码=findViewById(R.id.pass\u sign up);
最终编辑文本comfirm_pass=findViewById(R.id.comfirm_pass);
最终按钮提交=findviewbyd(R.id.submit\u btn\u注册);
最终文本视图符号=findViewById(R.id.textView8);
final FirebaseAuth mAuth=FirebaseAuth.getInstance();
最终字符串[]错误=新字符串[1];
最终进度条加载图标=findViewById(R.id.progressBar2);
//隐藏加载图标\\
加载图标。设置可见性(View.GONE);
signin.setOnClickListener(新视图.OnClickListener(){
@凌驾
公共void onClick(视图v){
意向意向=新意向(SignupActivity.this,MainActivity.class);
星触觉(意向);
}
});
submit.setOnClickListener(新视图.OnClickListener(){
@凌驾
公共void onClick(视图v){
加载图标设置可见性(View.VISIBLE);
字符串email_input=email.getText().toString();
String display_name_input=display_name.getText().toString();
字符串password_input=password.getText().toString();
字符串comfirm_pass_input=comfirm_pass.getText().toString();
if(email_input.isEmpty()| display_name_input.isEmpty()| pass_input.isEmpty()|确认_pass_input.isEmpty()){
错误[0]=“请填写所有值并重试”;
Toast.makeText(SignupActivity.this,错误[0],Toast.LENGTH_LONG.show();
加载图标。设置可见性(View.GONE);
}否则{
如果(!password_input.equals(comfirm_pass_input)){
错误[0]=“密码不匹配”;
Toast.makeText(SignupActivity.this,错误[0],Toast.LENGTH_LONG.show();
加载图标。设置可见性(View.GONE);
}否则{
mAuth.createUserWithEmailAndPassword(电子邮件输入,密码输入)。addOnCompleteListener(新的OnCompleteListener(){
@凌驾
未完成的公共void(@NonNull@NotNull任务){
if(task.issusccessful()){
完成();
//设置用户的显示名称\\
FirebaseUser=FirebaseAuth.getInstance().getCurrentUser();
UserProfileChangeRequest profileUpdates=新建UserProfileChangeRequest.Builder()
.setDisplayName(显示名称输入).build();
user.updateProfile(profileUpdates);
DatabaseReference mRef=FirebaseDatabase.getInstance().getReference();
mRef.addValueEventListener(新的ValueEventListener(){
@凌驾
公共void onDataChange(@NotNull DataSnapshot DataSnapshot){
//获取max_user_id以设置主用户id并在Firebase实时数据库上创建用户\\
字符串maxUserId=dataSnapshot.child(“max_user_id”).getValue().toString();
int-maxUserIdToInt=Integer.parseInt(maxUserId);
int userId=maxUserIdToInt+1;
newUserId=String.valueOf(userId);
mRef.child(“用户”).child(newUserId).child(“名称”).setValue(显示名称\输入);
}
@凌驾
已取消的公共void(@NotNull DatabaseError DatabaseError){
makeText(SignupActivity.this,“error:+databaseError,Toast.LENGTH_LONG).show();
}
});
mRef.child(“用户”).child(newUserId);
意向意向=新意向(SignupActivity.this、HomeActivity.class);
星触觉(意向);
}否则{
加载图标。设置可见性(View.GONE);
错误[0]=“注册失败,电子邮件地址存在或密码长度小于6个字符”;
Toast.makeText(SignupActivity.this,错误[0],Toast.LENGTH_LONG.show();
}
}
});
}
}
}
});
}
}

注意:我是firebase android应用程序的初学者。另外,我今天在这里创建了我的帐户,stackoverflow非常酷而且非常有用

当您调用
child()
时,您需要传递一个非空字符串作为参数。在您的例子中,
newUserId
由于某种原因是空的。因此,调用
child(newUserId)
,Firebase会抛出一个异常


前进的方向应该是检查您使用path
max\u user\u id
访问孩子的方式是否正确。您可以在该位置保留一个断点,然后遍历
dataSnapshot
的结构以获得正确的路径。

问题在该片段的最后一行:

DatabaseReference mRef = FirebaseDatabase.getInstance().getReference();

mRef.addValueEventListener(new ValueEventListener(){
    @Override
    public void onDataChange(@NotNull DataSnapshot dataSnapshot){

        // Get the max_user_id to set the main user id and create the user on Firebase real-time DB \\
        String maxUserId = dataSnapshot.child("max_user_id").getValue().toString();
        int maxUserIdToInt = Integer.parseInt(maxUserId);
        int userId = maxUserIdToInt+1;
        newUserId = String.valueOf(userId);
        mRef.child("users").child(newUserId).child("name").setValue(display_name_input);
    }

    @Override
    public void onCancelled(@NotNull DatabaseError databaseError){
        Toast.makeText(SignupActivity.this,"error: " + databaseError, Toast.LENGTH_LONG).show();
    }
});

mRef.child("users").child(newUserId);
那句话毫无意义