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

时间:2019-10-15 15:40:08

标签: java android firebase

我不太确定什么时候出错,但是我已经检查了变量名是否在布局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" />



3 个答案:

答案 0 :(得分:1)

我的理解是dataSnapshot为NULL。您应该通过在调试器中检查代码并在此行放置一个断点来确保此变量不为null。

也许您可以给我们更大范围的代码,以便我们查看dataSnapshot的来源。

This link may help you..

答案 1 :(得分:1)

ps为空:

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

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

答案 2 :(得分:0)

ps为null:因此请检查子项是否具有值。您还可以检查以下方法,它将停止应用崩溃,如果子值不为null,则将显示数据。

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);

            }

             }