Я использовал Google Sign в аутентификации с помощью firebase. когда пользователь google входит в приложение и сохраняет данные в базе данных, пользователь должен иметь возможность извлечь данные, которые они ранее сохранили, на основе своего идентификатора. это код для сохранения данных в firebase
public class UpdateMedicalProfile extends AppCompatActivity {
FirebaseUser fuser;
Intent intent;
DatabaseReference reference;
private Button updateProfilebtn;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_update_medical_profile);
Toolbar toolbar = findViewById(R.id.toolbar);
setSupportActionBar(toolbar);
updateProfilebtn = findViewById(R.id.updateProfile);
FirebaseUser user=FirebaseAuth.getInstance().getCurrentUser();
DatabaseReference myRef = FirebaseDatabase.getInstance().getReference("Users");
String userid =user.getUid();
myRef.child(userid).setValue(user);
updateProfilebtn.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
updateDetails();
}
});
//String Names = name.getText().toString();
intent = getIntent();
fuser = FirebaseAuth.getInstance().getCurrentUser();
reference = FirebaseDatabase.getInstance().getReference();
}
public void updateMedicalProfile(String name, String age, String bloodgroup, String allergy ){
DatabaseReference reference = FirebaseDatabase.getInstance().getReference("Users Medicals");
HashMap<String, Object> hashMap = new HashMap<>();
hashMap.put("name", name);
hashMap.put("age", age);
hashMap.put("bloodgroup", bloodgroup);
hashMap.put("allergy", allergy);
reference.child("Medical Info").push().setValue(hashMap);
}
public void updateDetails() {
FirebaseUser user = FirebaseAuth.getInstance().getCurrentUser();
String userEmail = user.getEmail();
EditText name = findViewById(R.id.name);
EditText age = findViewById(R.id.age);
EditText bloodgroup = findViewById(R.id.bloodgroup);
EditText allergy = findViewById(R.id.allergy);
String Names = name.getText().toString();
String Ages = age.getText().toString();
String bloodGroup = bloodgroup.getText().toString();
String Allergy = allergy.getText().toString();
String btnUpdateProfile = updateProfilebtn.getText().toString();
if (!Names.isEmpty() && !Ages.isEmpty() && !bloodGroup.isEmpty() && !Allergy.isEmpty() && ! btnUpdateProfile.isEmpty() ) {
updateMedicalProfile(Names, Ages, bloodGroup, Allergy);
Toast.makeText(UpdateMedicalProfile.this,
"Profile Updated Successfully", Toast.LENGTH_LONG).show();
} else {
Toast.makeText(UpdateMedicalProfile.this,
"You can't send an empty message", Toast.LENGTH_SHORT).show();
}
// report.setText("");
}
}
Это код для извлечения данных, которые указанный c пользователь сохранил
public class HomeFragment3 extends Fragment {
View homeView3;
private DatabaseReference databaseReference, rootRef;
private FirebaseUser firebaseUser;
private FirebaseAuth firebaseAuth;
TextView vName, vAge, vBloodGroup,vAllergy;
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
// Inflate the layout for this fragment
homeView3 = inflater.inflate(R.layout.fragment_home_fragment3, container, false);
vName = homeView3.findViewById(R.id.view_name);
vAge = homeView3.findViewById(R.id.view_age);
vBloodGroup = homeView3.findViewById(R.id.view_bloodGroup);
vAllergy = homeView3.findViewById(R.id.view_allergy);
rootRef = FirebaseDatabase.getInstance().getReference("Users Medicals");
databaseReference = rootRef.child("Medical Info");
ValueEventListener eventListener = new ValueEventListener() {
@Override
public void onDataChange(DataSnapshot dataSnapshot) {
for(DataSnapshot ds : dataSnapshot.getChildren()) {
String Name = ds.child("name").getValue(String.class);
String Age = ds.child("age").getValue(String.class);
String BloodGroup = ds.child("bloodgroup").getValue(String.class);
String Allergy = ds.child("allergy").getValue(String.class);
Log.d("TAG", Name + " / " + Age + " / " + BloodGroup + " / " + Allergy );
vName.setText(Name);
vAge.setText(Age);
vBloodGroup.setText(BloodGroup);
vAllergy.setText(Allergy);
}
}
@Override
public void onCancelled(DatabaseError databaseError) {}
};
databaseReference.addListenerForSingleValueEvent(eventListener);
return homeView3;
}
}
пожалуйста, что я делаю не так