안녕하세요 개발자
Firebase에서 데이터를 검색하려고하는데 데이터에 적용한 후 null 데이터가 표시 됩니다. 여기에 valueEventListener
포함 된 값 User
은 firebase의 내 데이터베이스입니다.
이것은 내 코드입니다
클래스 User
public class User {
public String id, fname,lname, side, email, phone;
public User(){ }
public User(String id,String fname,String lname,String side, String email, String phone) {
this.id=id;
this.fname = fname;
this.lname = lname;
this.side = side;
this.email = email;
this.phone = phone;
}
public String getFname() {
return fname;
}
public String getLname() {
return lname;
}
public String getSide() {
return side;
}
public String getEmail() {
return email;
}
public String getPhone() {
return phone;
}
public String getId() {
return id;
}
나의 valueEventListener
String uid = FirebaseAuth.getInstance().getCurrentUser().getUid();
DatabaseReference rootRef = FirebaseDatabase.getInstance().getReference("users_client");
DatabaseReference userNameRef = rootRef.child(uid);
userNameRef.addValueEventListener(new ValueEventListener() {
@Override
public void onDataChange(@NonNull DataSnapshot dataSnapshot) {
userinfo=dataSnapshot.getValue(User.class);
Toast.makeText(Login.this,userinfo.getFname(),Toast.LENGTH_SHORT).show();
}
@Override
public void onCancelled(@NonNull DatabaseError databaseError) {
}
});
오류: java.lang.NullPointerException: Attempt to invoke virtual method 'java.lang.String com.xxxx.gestient.User.getFname()' on a null object reference
참조에서 잘못된을 사용하고 있기 때문에 해당 오류가 발생합니다 uid
. 다음 코드 줄을 사용하는 경우 :
rootRef.child(uid);
child(uid)
인증 프로세스에서 오는 사용자 ID 인 메소드 로 전달합니다 . 사용자 세부 정보를 얻으려면 사용자 개체의 키가 일치해야합니다 uid
. 불행히도 데이터베이스에서는 해당 ID가 아니라 push()
메서드에 의해 생성 된 키를 사용하고 있습니다. 이는 올바르지 않습니다. 두 가지 옵션이 있습니다. 하나는 해당 사용자를 제거하고 올바른 사용자를 사용하여 다시 추가 uid
하거나 위의 코드 줄을 다음과 같이 변경하는 것입니다.
rootRef.child("-LuIC ... _9cx");
이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.
침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제
몇 마디 만하겠습니다