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

如何使用android studio在firebase中设置孩子丢失的错误信息

李安歌
2023-03-14

我在做一个关于能源监测的应用程序。在我的注册屏幕上,有四个编辑文本(全名、用户名、电子邮件、密码),一旦注册成功,将发送/存储到firebase。数据将由子用户名存储(类似于这样)在这里输入image description

esp32连接到firebase,它将在名为totalEnergy的用户名下存储一个子用户(这是一个int而不是字符串)。(类似这样)在这里输入图像描述

下面是示例代码

    public void loginUser(View view) {

    //validate login info
    if (!validateUsername() | !validatePassword()) {
        return;
    } else {
        progressBar.setVisibility(View.VISIBLE);
        isUser();
    }


}

private void isUser() {

    final String userEnteredUsername = username.getEditText().getText().toString().trim();
    final String userEnteredPassword = password.getEditText().getText().toString().trim();

    rootNode = FirebaseDatabase.getInstance();
    reference = rootNode.getReference("USER INFO");

    Query checkUser = reference.orderByChild("username").equalTo(userEnteredUsername);

    checkUser.addListenerForSingleValueEvent(new ValueEventListener() {
        @Override
        public void onDataChange(@NonNull DataSnapshot snapshot) {
            if (snapshot.exists()) {

                username.setError(null);
                username.setErrorEnabled(false);

                String passwordFromDB = snapshot.child(userEnteredUsername).child("password").getValue(String.class);

                if (passwordFromDB.equals(userEnteredPassword)) {

                    username.setError(null);
                    username.setErrorEnabled(false);

                    String fullNameFromDB = snapshot.child(userEnteredUsername).child("fullName").getValue(String.class);
                    String usernameFromDB = snapshot.child(userEnteredUsername).child("username").getValue(String.class);
                    String emailFromDB = snapshot.child(userEnteredUsername).child("email").getValue(String.class);

                    Intent intent = new Intent(getApplicationContext(), UserDashboard.class);
                    Bundle extras = new Bundle();

                    int totalEnergyFromDB = snapshot.child(userEnteredUsername).child("totalEnergy").getValue(int.class);

                        intent.putExtra("fullName", fullNameFromDB);
                        intent.putExtra("username", usernameFromDB);
                        intent.putExtra("email", emailFromDB);
                        intent.putExtra("password", passwordFromDB);
                        
                        extras.putString("totalEnergy", totalEnergyFromDB + "");
                        intent.putExtras(extras);

                        startActivity(intent);


                } else {
                    progressBar.setVisibility(View.GONE);
                    password.setError("Wrong Password!");
                    password.requestFocus();
                }
            } else {
                progressBar.setVisibility(View.GONE);
                username.setError("No such user exist!");
                username.requestFocus();
            }
        }

        @Override
        public void onCancelled(@NonNull DatabaseError error) {
            progressBar.setVisibility(View.GONE);
            Toast.makeText(Login.this, error.getMessage(), Toast.LENGTH_SHORT).show();
        }
    });
}

我已经做了一个星期了,我想不通!(请帮忙!!!谢谢!

你好Hb。这是错误:(在这里输入图像描述

共有1个答案

段哲圣
2023-03-14

您可以检查ESP32是否不是-1,如果不是则继续,如下所示:

java prettyprint-override">if (passwordFromDB.equals(userEnteredPassword)) { 
    username.setError(null);
    username.setErrorEnabled(false); 
    String fullNameFromDB = snapshot.child(userEnteredUsername).child("fullName").getValue(String.class); 
    String usernameFromDB = snapshot.child(userEnteredUsername).child("username").getValue(String.class); 
    String emailFromDB = snapshot.child(userEnteredUsername).child("email").getValue(String.class); 

    int totalEnergyFromDB = -1;

    try {
        totalEnergyFromDB = snapshot.child(userEnteredUsername).child("totalEnergy").getValue(int.class);
    } catch (Exception e){
        e.printStackTrace();
    }

    if (totalEnergyFromDB != -1) {
        Intent intent = new Intent(getApplicationContext(), UserDashboard.class); 
        Bundle extras = new Bundle();
        intent.putExtra("fullName", fullNameFromDB); 
        intent.putExtra("username", usernameFromDB); 
        intent.putExtra("email", emailFromDB); 
        intent.putExtra("password", passwordFromDB); 
        extras.putString("totalEnergy", totalEnergyFromDB + ""); 
        intent.putExtras(extras);
        startActivity(intent); 
    } else {
        Toast.makeText(Login.this, "Your account is not yet ready! Please try again later", Toast.LENGTH_SHORT).show();
    }
}
 类似资料:
  • 我安装了Java1.7.0_21,卸载了以前的版本后,今天安装了1.7.0_45。现在Android Studio已经停止编译项目,并表示无法找到1.7.0_21文件夹。如何为Java SDK设置新路径?我也改变了环境变量,但不起作用。

  • 在下面的代码中,如何获取被点击按钮的< code>Button位置? }

  • 问题内容: 注意:我没有尝试在Windows或2.7.3以外的Python版本下重现下面描述的问题。 引发问题的最可靠方法是通过(在之下)通过管道传递以下测试脚本的输出: 即: 我的问题是: __如图所示(在Unix /下)运行脚本时, 如何修改上面的测试脚本 以避免错误消息? (如测试脚本所示,不能用来捕获错误。) 诚然,上面的示例是高度人为的,但是当我的脚本的输出通过某些第三方软件传递时, 有

  • 它通常表现为红色,我想改变它。我应该在文件中使用哪些项名/键来确定颜色目标? 提前谢了。 编辑: 当出现错误消息时,字段上方的提示将变为与错误消息相同的颜色,覆盖提示颜色--这是经过设计的。

  • 我想在我的用户列表中找到最年轻的用户并加载他们的数据:姓名、个人资料图片和当前工作分配。我已经阅读了有关查询数据的Firebase入门,但它们的示例对我不适用,因为我的数据组织方式不同。我有一个额外的子层。 这是我在Firebase中的JSON树: 我尝试加载用户列表,然后对其进行迭代以找到最年轻的用户,但这似乎有些过头了。Firebase文档让我觉得应该能够通过Firebase方法进行查询,比如

  • 问题内容: 我有一个字符串数组,我正在尝试通过Firebase填充它。它是一个聊天应用程序,当用户创建房间时,他或她将房间命名。当用户登录并进入登录页面时,它会查询他或她正在参与的所有房间,我希望该房间能填充表格视图。在firebase文档中,我找到了childrenCount,但似乎无法正常工作。到目前为止,这是我尝试过的 我得到一个错误,即计数是仅获得属性。我如何填充该数组计数? 问题答案: