안드로이드 스튜디오가 강제종료 됩니다 'java.lang.String java.lang.Object.toString()' on a null object reference
조회수 3045회
지도 맵에서 버튼을 누르면 오류가 납니다. 스레드를 이용하긴 했는데, 도대체 어느 부분이 틀린 건지 모르겠어요. 다른분이 하신거 그대로 따라한건데, 도와주세요 logcat 해석을 잘 못해서 도와주세요.
06-20 16:55:53.125 15979-15979/com.ossw.taxiapp E/AndroidRuntime: FATAL EXCEPTION: main
Process: com.ossw.taxiapp, PID: 15979
java.lang.NullPointerException: Attempt to invoke virtual method 'java.lang.String java.lang.Object.toString()' on a null object reference
at com.ossw.taxiapp.CustomerMapActivity$6.onDataChange(CustomerMapActivity.java:289)
at com.google.firebase.database.Query$1.onDataChange(com.google.firebase:firebase-database@@19.3.0:179)
at com.google.firebase.database.core.ValueEventRegistration.fireEvent(com.google.firebase:firebase-database@@19.3.0:75)
at com.google.firebase.database.core.view.DataEvent.fire(com.google.firebase:firebase-database@@19.3.0:63)
at com.google.firebase.database.core.view.EventRaiser$1.run(com.google.firebase:firebase-database@@19.3.0:55)
at android.os.Handler.handleCallback(Handler.java:739)
at android.os.Handler.dispatchMessage(Handler.java:95)
at android.os.Looper.loop(Looper.java:135)
at android.app.ActivityThread.main(ActivityThread.java:5221)
at java.lang.reflect.Method.invoke(Native Method)
at java.lang.reflect.Method.invoke(Method.java:372)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:899)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:694)
//오류구간 입니다
private void getDriverInfo() {
mDriverInfo.setVisibility(View.VISIBLE);
DatabaseReference mCustomerDatabase = FirebaseDatabase.getInstance().getReference().child("Users").child("Drivers").child(driverFoundID);
mCustomerDatabase.addListenerForSingleValueEvent(new ValueEventListener() {
@Override
public void onDataChange(DataSnapshot dataSnapshot) {
if (dataSnapshot.exists() && dataSnapshot.getChildrenCount() > 0) {
if (dataSnapshot.child("name") != null) {
d_name.setText(dataSnapshot.child("name").getValue().toString());
}
if (dataSnapshot.child("phone") != null) {
d_phone.setText(dataSnapshot.child("phone").getValue().toString());
}
if (dataSnapshot.child("car") != null) {
d_car.setText(dataSnapshot.child("car").getValue().toString());
}
if (dataSnapshot.child("carNum") != null) {
d_callNum.setText(dataSnapshot.child("callNum").getValue().toString());
}
if (dataSnapshot.child("profileImageUrl").getValue() != null) {
Glide.with(getApplication()).load(dataSnapshot.child("profileImageUrl").getValue().toString()).into(d_profileimg);
}
int ratingSum = 0;
float ratingsTotal = 0;
float ratingsAvg = 0;
for (DataSnapshot child : dataSnapshot.child("rating").getChildren()) {
ratingSum = ratingSum + Integer.valueOf(child.getValue().toString());
ratingsTotal++;
}
if (ratingsTotal != 0) {
ratingsAvg = ratingSum / ratingsTotal;
mRatingBar.setRating(ratingsAvg);
}
}
}
@Override
public void onCancelled(DatabaseError databaseError) {
}
});
}
-
(•́ ✖ •̀)
알 수 없는 사용자 - 〉
1 답변
-
if (dataSnapshot.child("carNum") != null) { d_callNum.setText(dataSnapshot.child("callNum").getValue().toString()); }
이 부분의 오타 때문인 것 같습니다.
Logcat을 보면 Null Object Reference에 toString() 메서드를 호출했다고 하는 것을 볼 수가 있는데, 이 부분에서 일어난 것 같네요.
늦었지만 도움 되시길 바랍니다.
-
(•́ ✖ •̀)
알 수 없는 사용자
-
댓글 입력