Java 未执行Firebase onDataChange
我想从Firebase实时数据库获取数据,但onDataChange()方法看起来好像没有执行。我设置了一些断点,但它似乎从未进入onDataChange()。这是数据库数据Java 未执行Firebase onDataChange,java,android,firebase,firebase-realtime-database,Java,Android,Firebase,Firebase Realtime Database,我想从Firebase实时数据库获取数据,但onDataChange()方法看起来好像没有执行。我设置了一些断点,但它似乎从未进入onDataChange()。这是数据库数据 { "User" : { "0988123344" : { "Name" : "Eddy", "Password" : "1234" } } } 我还检查
{
"User" : {
"0988123344" : {
"Name" : "Eddy",
"Password" : "1234"
}
}
}
我还检查了Logcat,没有错误
Button btnSignIn;
final FirebaseDatabase database = FirebaseDatabase.getInstance();
final DatabaseReference table_user = database.getReference("User");
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_sign_in);
edtPassword = (MaterialEditText)findViewById(R.id.edtPassword);
edtPhone = (MaterialEditText)findViewById(R.id.edtPhone);
btnSignIn = (Button)findViewById(R.id.sbtnSignIn);
}
@Override
protected void onStart() {
super.onStart();
btnSignIn.setOnClickListener(v -> table_user.addValueEventListener(new ValueEventListener() {
@Override
public void onDataChange(@NonNull DataSnapshot snapshot) {
User user = snapshot.child(edtPhone.getText().toString()).getValue(User.class);
if(user.getPassword().equals(edtPassword.getText().toString())){
Toast.makeText(SignIn.this,"Success!",Toast.LENGTH_SHORT).show();
}else{
Toast.makeText(SignIn.this,"fail!",Toast.LENGTH_SHORT).show();
}
}
@Override
public void onCancelled(@NonNull DatabaseError error) {
}
}));
}
这就是用户
private String Name;
private String Password;
public User(String name, String password) {
Name = name;
Password = password;
}
public User() {
}
public String getName() {
return Name;
}
public void setName(String name) {
Name = name;
}
public String getPassword() {
return Password;
}
public void setPassword(String password) {
Password = password;
}
}
使用此代码
reference.addValueEventListener(new ValueEventListener() {
@Override
public void onDataChange(@NonNull DataSnapshot snapshot) {
for (DataSnapshot dataSnapshot : snapshot.getChildren()) {
User user = dataSnapshot.getValue(User.class);
Toast.makeText(MainActivity.this, "name: "+user.getName(), Toast.LENGTH_SHORT).show();
Toast.makeText(MainActivity.this, "password: "+user.getPassword(), Toast.LENGTH_SHORT).show();
}
}
@Override
public void onCancelled(@NonNull DatabaseError error) {
}
});
在onCreate方法中执行此任务在onCreate方法中执行此任务我尝试过,不起作用OK,请指定要在数据库结构中执行的操作我只想将数据从firebase获取到该用户对象中。这里有一幅数据库结构图。首先,停止忽略错误。使用Log.d(标记,error.getMessage())代码>。你有没有在航海日志上打印出来?还请编辑您的问题,并将您的数据库结构添加为JSON文件。您只需单击溢出菜单中的导出JSON即可获得它(⠇) 在您的.Please中,请使用@AlexMamoI在onCreate中使用了您的代码,但仍然不起作用。从未进入onDataChange(),il表现为firebase未正确配置,但在日志中有一个“FirebaseApp初始化成功”。您是否检查FirebaseApp中的规则这些规则是{“规则”:{.read”:true,“.write”:true}