![](/img/trans.png)
[英]How to display data of specific current logged in user in Firebase Database?
[英]How to display specific data of current user from firebase to new activity?
我的代码有问题,无法向新活动显示数据(来自上一个活动的输入)。
这是我当前的 HomepageActivity 代码:
private void viewBMI() {
FirebaseDatabase database = FirebaseDatabase.getInstance();
final String uid = FirebaseAuth.getInstance().getCurrentUser().getUid();
DatabaseReference myRef = database.getReference("Users").child("bmi").child(uid);
// Read from the database
myRef.addListenerForSingleValueEvent(new ValueEventListener() {
@Override
public void onDataChange(@NonNull DataSnapshot dataSnapshot) {
String finalBmi = (String) dataSnapshot.getValue();
showBMI.setText("BMI: " + String.valueOf(finalBmi));
}
@Override
public void onCancelled(@NonNull DatabaseError error) {
// Failed to read value
//Log.w(BMI, "Failed to read value.", error.toException());
}
});
这是之前活动的代码:
private void updateBMI(double bmi, final FirebaseUser currentUser) {
kg = Double.parseDouble(inputKg.getText().toString());
m = Double.parseDouble(inputM.getText().toString());
metricFormula = new MetricFormula(kg, m);
imperialFormula = new ImperialFormula(kg, m);
//bmi = String.valueOf(TWO_DECIMAL_PLACES.format(metricFormula.computeBMI(metricFormula.getInputKg(),metricFormula.getInputM())));
bmi = Double.parseDouble(TWO_DECIMAL_PLACES.format(metricFormula.computeBMI(metricFormula.getInputKg(),metricFormula.getInputM())));
final double finalBmi = bmi;
mAuth.updateCurrentUser(currentUser).addOnCompleteListener(this, new OnCompleteListener<Void>() {
@Override
public void onComplete(@NonNull Task<Void> task) {
UserProfileChangeRequest profileUpdate = new UserProfileChangeRequest.Builder()
.build();
currentUser.updateProfile(profileUpdate)
.addOnCompleteListener(new OnCompleteListener<Void>() {
@Override
public void onComplete(@NonNull Task<Void> task) {
if(task.isSuccessful()){
Map<String, Object> values = new HashMap<>();
values.put("bmi", finalBmi);
FirebaseDatabase.getInstance().getReference("Users")
.child(FirebaseAuth.getInstance().getCurrentUser().getUid())
.updateChildren(values).addOnCompleteListener(new OnCompleteListener<Void>() {
@Override
public void onComplete(@NonNull Task<Void> task) {
//progressBar.setVisibility(View.GONE);
if (task.isSuccessful()) {
//acc successfully registered
showMessage("Account Updated");
updateUI();
}
else{
}
}
});
}
}
});
}
});
}
//next page
private void updateUI() {
Intent homepageActivity = new Intent(EditProfileActivity.this,HomepageUser.class);
//homepageActivity.putExtra("bmi",bmi); //new
startActivity(homepageActivity);
finish();
}
我认为,您的参考没有正确到达
DatabaseReference myRef = database.getReference("Users").child("bmi").child(uid);
“用户”下没有子“bmi”
在您的图像中,您有用户 -> JKkaSDGLdkM7HxzBKf1ivJ4G6A03 -> bmi...等
您还需要考虑另一层来获取信息。
您的儿童访问顺序不正确。 正如我在 Firebase Child Hierarchy 的图片中看到的,您在“userID”下有“bmi”。 所以更换
DatabaseReference myRef = database.getReference("Users").child("bmi").child(uid);
和
DatabaseReference myRef = database.getReference("Users").child(uid).child("bmi");
由于层次结构是Users->id->bmi(jason对象的一个组件)
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.