我在做一个关于能源监测的应用程序。在我的注册屏幕上,有四个编辑文本(全名、用户名、电子邮件、密码),一旦注册成功,将发送/存储到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。这是错误:(在这里输入图像描述
您可以检查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,但似乎无法正常工作。到目前为止,这是我尝试过的 我得到一个错误,即计数是仅获得属性。我如何填充该数组计数? 问题答案: