java.lang.NullPointerException:尝试从空对象引用上的字段"java.lang.String com.example.g.Model.PersonalShopper.ps_



我不太确定什么时候出错了,但是我已经检查了变量名称是否相同,无论它是在布局xml还是java类中,但是当我运行应用程序时,它给了我错误,说

java.lang.NullPointerException:尝试从空对象引用上的字段"java.lang.String com.example.g.Model.Ps.ps_name"读取

我已经声明了变量 btw。

firebaseAuth = FirebaseAuth.getInstance();
currentUser = firebaseAuth.getCurrentUser();
psID = currentUser.getUid();
databaseReference = FirebaseDatabase.getInstance().getReference("PersonalShopper").child(firebaseAuth.getUid());
databaseReference.addValueEventListener(new ValueEventListener() {
@Override
public void onDataChange(@NonNull DataSnapshot dataSnapshot) {
PersonalShopper ps = dataSnapshot.getValue(PersonalShopper.class);
psname.setText(ps.ps_name);
pspassword.setText(ps.ps_password);
psemail.setText(ps.ps_email);
}

<TextView
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="Name"
android:textSize="13dp"/>
<EditText
android:id="@+id/psname"
android:layout_width="match_parent"
android:layout_height="wrap_content" />

<TextView
android:layout_marginTop="10dp"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="Password"
android:textSize="13dp"/>

<EditText
android:id="@+id/pspassword"
android:layout_width="match_parent"
android:layout_height="wrap_content" />

<TextView
android:layout_marginTop="10dp"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="Email"
android:textSize="13dp"/>
<TextView
android:id="@+id/psemail"
android:hint="email@gmail.com"
android:layout_width="match_parent"
android:layout_height="wrap_content" />

我的理解是dataSnapshot是空的。应通过在调试器中午用代码并在此行放置断点来确保此变量不为 null。

也许你可以给我们一个更大的代码范围,这样我们就可以看到dataSnapshot来自哪里。

此链接可能会对您有所帮助。

ps为空:

PersonalShopper ps = dataSnapshot.getValue(PersonalShopper.class);

这意味着您查询的数据库位置没有数据。 检查查询和数据库的内容,确保一切正确。

ps为空:所以检查孩子是否有值。您还可以检查以下方法,它将阻止应用程序崩溃,如果子值不为空,它将显示数据。

databaseReference.addValueEventListener(new ValueEventListener() {
@Override
public void onDataChange(@NonNull DataSnapshot dataSnapshot) {
if (dataSnapshot.exists()){

PersonalShopper ps = dataSnapshot.getValue(PersonalShopper.class);
psname.setText(ps.ps_name);
pspassword.setText(ps.ps_password);
psemail.setText(ps.ps_email);
}
}

最新更新