当前位置: 首页 > 知识库问答 >
问题:

不能为child()中的参数“path string”传递null firebase错误

俞涵涤
2023-03-14
    LayoutInflater inflater = LayoutInflater.from(this);
    View layout_pwd = inflater.inflate(R.layout.ganti_password_layout,null);

    final MaterialEditText edtPassword = (MaterialEditText)layout_pwd.findViewById(R.id.gantiPassword);
    final MaterialEditText edtNewPassword = (MaterialEditText)layout_pwd.findViewById(R.id.gantiPasswordBaru);
    final MaterialEditText edtRepeatPassword = (MaterialEditText)layout_pwd.findViewById(R.id.gantiPasswordBaruUlang);

    alertDialog.setView(layout_pwd);

    //Button
    alertDialog.setPositiveButton("GANTI", new DialogInterface.OnClickListener() {
        @Override
        public void onClick(DialogInterface dialogInterface, int i) {
            //Ganti Password Disini
            final android.app.AlertDialog waitingDialog = new SpotsDialog(Home.this);
            waitingDialog.show();

            //cek password lama
            if(edtPassword.getText().toString().equals(Common.currentUser.getPassword()))
            {
                //Cek Password Baru dan Ulang Password
                if(edtNewPassword.getText().toString().equals(edtRepeatPassword.getText().toString()))
                {
                    Map<String,Object> passwordUpdate = new HashMap<>();
                    passwordUpdate.put("password",edtNewPassword.getText().toString());

                    //Update
                    DatabaseReference user = FirebaseDatabase.getInstance().getReference("User");
                    user.child(Common.currentUser.getPhone())
                            .updateChildren(passwordUpdate)
                            .addOnCompleteListener(new OnCompleteListener<Void>() {
                                @Override
                                public void onComplete(@NonNull Task<Void> task) {
                                    waitingDialog.dismiss();
                                    Toast.makeText(Home.this, "Password Telah Diganti", Toast.LENGTH_SHORT).show();
                                }
                            })
                            .addOnFailureListener(new OnFailureListener() {
                                @Override
                                public void onFailure(@NonNull Exception e) {
                                    Toast.makeText(Home.this, e.getMessage(), Toast.LENGTH_SHORT).show();
                                }
                            });
                }
                else
                {
                    waitingDialog.dismiss();
                    Toast.makeText(Home.this, "Pengulangan Password Tidak Sesuai", Toast.LENGTH_SHORT).show();
                }
            }
            else
            {
                waitingDialog.dismiss();
                Toast.makeText(Home.this, "Password Lama Salah", Toast.LENGTH_SHORT).show();
            }

        }
    });

我的结构数据库数据库结构

这是我的用户类

public User(){

}

public User(String nama, String password, String kodeKeamanan) {
    Nama = nama;
    Password = password;
    IsStaff = "false";
    this.KodeKeamanan = kodeKeamanan;
}

public String getKodeKeamanan() {
    return KodeKeamanan;
}

public void setKodeKeamanan(String kodeKeamanan) {
    KodeKeamanan = kodeKeamanan;
}

public String getPhone() {
    return Phone;
}

public void setPhone(String phone) {
    Phone = phone;
}

public String getIsStaff() {
    return IsStaff;
}

public void setIsStaff(String isStaff) {
    IsStaff = isStaff;
}

public String getNama() {
    return Nama;
}

public void setNama(String nama) {
    Nama = nama;
}

public String getPassword() {
    return Password;
}

public void setPassword(String password) {
    Password = password;
}

共有1个答案

尉迟清野
2023-03-14

此问题的存在是因为方法common.currentuser.getphone()返回null。

要修复它,只需在child()方法调用之前添加简单的null测试即可。

像这样:

String phone = Common.currentUser.getPhone();
if (phone != null)
    user.child(phone)
                            .updateChildren(passwordUpdate)
                            .addOnCompleteListener(new OnCompleteListener<Void>() {
                                @Override
                                public void onComplete(@NonNull Task<Void> task) {
                                    waitingDialog.dismiss();
                                    Toast.makeText(Home.this, "Password Telah Diganti", Toast.LENGTH_SHORT).show();
                                }
                            })
                            .addOnFailureListener(new OnFailureListener() {
                                @Override
                                public void onFailure(@NonNull Exception e) {
                                    Toast.makeText(Home.this, e.getMessage(), Toast.LENGTH_SHORT).show();
                                }
                            });
else {
    // do something else here
}
 类似资料:
  • 我目前正在尝试将我的Firebase数据库中的内容读入中,但我希望将它们从最后一个节点加载到第一个节点。所以我决定将键放入一个数组中,然后尝试从数组的末尾读到前面,但是当我尝试访问键数组时,我看到的是中的参数'path string'传递null错误。

  • 问题内容: 我在firebase中执行查询时遇到错误,我的查询代码如下所示: 但是我收到以下错误: 异常java.lang.RuntimeException:无法启动活动ComponentInfo {ucarparceiro.ucarapp.com.ucarparceiro / ucarparceiro.ucarapp.com.ucarparceiro.Activity.ActivityPrinc

  • 这个问题的解决方案是什么?问题在这里,代码在这里: > 列表项 在BindViewHolder上公开无效(@nonNull HolderOrderShop持有人,int位置){ //转换时间日历=日历。getInstance();日历setTimeInMillis(Long.parseLong(orderTime));String formattedate=DateFormat。格式(“日/月/年

  • 我最近将firebase数据库的订单更改为Location,我知道我漏了一些东西,但我找不到确切的问题。有人能指出我在这里做错了什么吗?

  • 我试图从rest控制器触发一个spring批处理作业,我需要向步骤传递参数。我使用了一个SystemCommandTasklet,正如这里所建议的那样,我将该Tasklet添加为StepListener,但我一直得到一个NPE。 我在这里创建了一个示例项目:如果您运行测试,您将在输出中看到以下内容:

  • 这里变量x(在主)的值是6,这是正确的,但当我写同样的事情在system.out.println== 当我尝试在print语句中放入x时,它工作得很好。但我想知道它给出错误的原因。 错误: