Это код HomePage.java
ProfileDetail pd=new ProfileDetail(Email1);
Log.d("TAG","profile in HomePage");
Profile p=pd.getAllDetails();
Log.d("TAG","profile after Method in HomePAge");
, и это мой класс ProfileDetail:
public class ProfileDetail implements Parcelable {
private String mailId;
private Profile profile;
DatabaseReference mDatabase=
FirebaseDatabase.getInstance().getReference("users").child("profile");
Profile pp=null;
protected ProfileDetail(Parcel in) {
mailId = in.readString();
}
public static final Creator<ProfileDetail> CREATOR = new Creator<ProfileDetail>() {
@Override
public ProfileDetail createFromParcel(Parcel in) {
return new ProfileDetail(in);
}
@Override
public ProfileDetail[] newArray(int size) {
return new ProfileDetail[size];
}
};
public String getMailId() {
return mailId;
}
public void setMailId(String mailId) {
this.mailId = mailId;
}
public ProfileDetail(String mailId)
{
Log.d("TAG","profile inside ProfileDetail mail= "+mailId);
this.mailId=mailId;
readData(new FireBaseCallBack() {
@Override
public void onCallback(Profile p)
{
profile=p;
Log.d("TAG","profile inside louda pp="+p.toString());
Log.d("TAG","profile inside louda");
}
});
}
public Profile getAllDetails()
{
Log.d("TAG","profile inside getALLDEtails");
Log.d("TAG","profile inside getALlDetails pp="+profile.toString());
return profile;
}
public void readData(final FireBaseCallBack fireBaseCallBack)
{
mDatabase.addListenerForSingleValueEvent(new ValueEventListener() {
@Override
public void onDataChange(@NonNull DataSnapshot dataSnapshot) {
for (DataSnapshot dataSnapshot1:dataSnapshot.getChildren())
{
Log.d("TAG","profile inside 1st datasnapshot");
for (DataSnapshot dataSnapshot2:dataSnapshot1.getChildren())
{
if (mailId.equals(dataSnapshot2.getValue(String.class)))
{
pp =dataSnapshot1.getValue(Profile.class);
Log.d("TAG","profile inside 2nd datasnapshot");
// p[0] =pp;
}
}
}
fireBaseCallBack.onCallback(pp);
}
@Override
public void onCancelled(@NonNull DatabaseError databaseError) {
}
});
}
@Override
public int describeContents() {
return 0;
}
@Override
public void writeToParcel(Parcel parcel, int i) {
parcel.writeString(mailId);
}
private interface FireBaseCallBack
{
void onCallback(Profile p);
}
}
Я получаю этот результат
профиль в профиле HomePage внутриПрофиль getALLDEtails, выходящий за пределы Профиль getALLDEtails после метода в профиле HomePAge внутри 1-го профиля datasnapshot внутри 1-го профиля datasnapshot внутри 1-го профиля datasnapshot внутри 2-го datasnapshot
Я использую другое решение, представленное здесь, но ничего не получается. Делая это, я всегда получаю объект профилякак ноль, поскольку объект профиля получает значение позже, пожалуйста, помогите мне в этом
I