簡體   English   中英

如果使用android studio在firebase中缺少孩子,如何設置錯誤消息

[英]How to set error message if a child is missing in firebase using android studio

我正在制作一個關於能源監控的應用程序。 在我的注冊屏幕中,有四個編輯文本(全名、用戶名、電子郵件、密碼)將在注冊成功后發送/存儲到 Firebase。 數據將由子用戶名存儲(類似這樣)在此處輸入圖像描述

一個 esp32 連接到 firebase,它將在名為 totalEnergy 的用戶名下存儲一個孩子(這是一個 int 不是字符串)。 (類似這樣)在此處輸入圖像描述

在登錄屏幕中有 2 個編輯文本(用戶名、密碼)

我想要做的是設置一個錯誤,如果 esp32 尚未存儲 totalEnergy,則不允許用戶登錄用戶儀表板。

基本上為了去用戶儀表板,應用程序需要獲取 5 個孩子(用戶名、全名、電子郵件、密碼、總能量)。 如果尚未給出 totalEnergy,我想設置一個錯誤,例如“您的帳戶尚未准備好!請稍后再試”。

這是示例代碼。

    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。 這是錯誤:(在此處輸入圖像描述

你好HB。 應用錯誤 :(在此處輸入圖片說明

您可以檢查esp32是否不是-1 ,如果不是,則僅繼續,如下所示:

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();
    }
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM