Java 检索Firebase对象空指针异常
我得到了一个Java 检索Firebase对象空指针异常,java,android,firebase,firebase-realtime-database,nullpointerexception,Java,Android,Firebase,Firebase Realtime Database,Nullpointerexception,我得到了一个java.lang.NullPointerException错误,尽管我检查了mInternshipId,它与我预期的一样,但它不起作用 这是我的Firebase内容 这是我的实习课 public class Internship { private String internshipId; private String internshipTitle; private String internshipDesc; private String in
java.lang.NullPointerException
错误,尽管我检查了mInternshipId
,它与我预期的一样,但它不起作用
这是我的Firebase内容
这是我的实习课
public class Internship {
private String internshipId;
private String internshipTitle;
private String internshipDesc;
private String internshipDate;
private String internshipImage;
private String internshipCreatorId;
public Internship() {
}
public Internship(String internshipId, String internshipTitle, String internshipDesc, String internshipDate, String internshipImage, String internshipCreatorId) {
this.internshipId = internshipId;
this.internshipTitle = internshipTitle;
this.internshipDesc = internshipDesc;
this.internshipDate = internshipDate;
this.internshipImage = internshipImage;
this.internshipCreatorId = internshipCreatorId;
}
public String getInternshipTitle() {
return internshipTitle;
}
public String getInternshipId() {
return internshipId;
}
public void setInternshipId(String internshipId) {
this.internshipId = internshipId;
}
public void setInternshipTitle(String internshipTitle) {
this.internshipTitle = internshipTitle;
}
public String getInternshipDesc() {
return internshipDesc;
}
public void setInternshipDesc(String internshipDesc) {
this.internshipDesc = internshipDesc;
}
public String getInternshipDate() {
return internshipDate;
}
public void setInternshipDate(String internshipDate) {
this.internshipDate = internshipDate;
}
public String getInternshipImage() {
return internshipImage;
}
public void setInternshipImage(String internshipImage) {
this.internshipImage = internshipImage;
}
public String getInternshipCreatorId() {
return internshipCreatorId;
}
public void setInternshipCreatorId(String internshipCreatorId) {
this.internshipCreatorId = internshipCreatorId;
}
}
这就是我使用它的地方。这表明Mintership尚未初始化。提前感谢大家抽出时间
//Get The Internship ID
Intent intent = getIntent();
mInternshipId = intent.getStringExtra(INTERNSHIP_ID);
//Initialize the Database Reference
databaseReference = FirebaseDatabase.getInstance().getReference().child("Internships").child(mInternshipId);
databaseReference.addValueEventListener(new ValueEventListener() {
@Override
public void onDataChange(@NonNull DataSnapshot dataSnapshot) {
//Initialize Useful Variables
mInternship = dataSnapshot.getValue(Internship.class);
organizationId = mInternship.getInternshipCreatorId();
databaseReference = FirebaseDatabase.getInstance().getReference().child("Users").child("Organizations").child(organizationId);
databaseReference.addValueEventListener(new ValueEventListener() {
@Override
public void onDataChange(@NonNull DataSnapshot dataSnapshot) {
internshipLocation = (String) dataSnapshot.child("location").getValue();
}
@Override
public void onCancelled(@NonNull DatabaseError databaseError) {
}
});
}
@Override
public void onCancelled(@NonNull DatabaseError databaseError) {
}
});
问题就在这条线上
mInternshipId = intent.getStringExtra(INTERNSHIP_ID);
您没有获得额外的资源,因此无法引用Firebase数据库中的对象,这会导致null引用处的null指针检索数据
databaseReference = FirebaseDatabase.getInstance().getReference().child("Internships").child("-LchJYhSf3uwlv7AAXtr");
确保您在这个类中得到了额外的值,放置一个调试点并查看mInternshipId
有一种方法可以检查mInternshipId是否是问题所在
databaseReference = FirebaseDatabase.getInstance().getReference().child("Internships").child(mInternshipId);
在不使用mInternshipId
的情况下运行此行,并对子级进行硬编码以获取数据
databaseReference = FirebaseDatabase.getInstance().getReference().child("Internships").child("-LchJYhSf3uwlv7AAXtr");
如果这对硬代码子级有效,您可以确保问题在您的
getStringExtra()
上,问题在这一行
mInternshipId = intent.getStringExtra(INTERNSHIP_ID);
您没有获得额外的资源,因此无法引用Firebase数据库中的对象,这会导致null引用处的null指针检索数据
databaseReference = FirebaseDatabase.getInstance().getReference().child("Internships").child("-LchJYhSf3uwlv7AAXtr");
确保您在这个类中得到了额外的值,放置一个调试点并查看mInternshipId
有一种方法可以检查mInternshipId是否是问题所在
databaseReference = FirebaseDatabase.getInstance().getReference().child("Internships").child(mInternshipId);
在不使用mInternshipId
的情况下运行此行,并对子级进行硬编码以获取数据
databaseReference = FirebaseDatabase.getInstance().getReference().child("Internships").child("-LchJYhSf3uwlv7AAXtr");
如果对硬代码子级有效,您可以确保问题出在您的
getStringExtra()
是否可以在此处添加RealtimeDatabase规则?数据库中没有任何规则。打开Firebase控制台,导航到RealtimeDatabase,在第二个选项卡中可以找到规则。我的意思是读和写都是真的。你能在这里添加RealtimeDatabase规则吗?数据库中没有任何规则。打开Firebase控制台,导航到RealtimeDatabase,在第二个选项卡中可以找到规则。我的意思是读和写都是真的。