【问题标题】:Process: com.android.text, PID: 26427 java.lang.NullPointerException [duplicate]进程:com.android.text,PID:26427 java.lang.NullPointerException [重复]
【发布时间】:2020-03-23 12:29:42
【问题描述】:
2020-03-23 13:16:34.533 26427-26427/com.android.text E/AndroidRuntime: FATAL EXCEPTION: main
    Process: com.android.text, PID: 26427
    java.lang.NullPointerException: Attempt to invoke virtual method 'boolean java.lang.String.equals(java.lang.Object)' on a null object reference
        at com.android.text.MainActivity$1.onDataChange(MainActivity.java:54)
        at com.google.firebase.database.core.ValueEventRegistration.fireEvent(com.google.firebase:firebase-database@@19.2.1:75)
        at com.google.firebase.database.core.view.DataEvent.fire(com.google.firebase:firebase-database@@19.2.1:63)
        at com.google.firebase.database.core.view.EventRaiser$1.run(com.google.firebase:firebase-database@@19.2.1:55)
        at android.os.Handler.handleCallback(Handler.java:790)
        at android.os.Handler.dispatchMessage(Handler.java:99)
        at android.os.Looper.loop(Looper.java:166)
        at android.app.ActivityThread.main(ActivityThread.java:6518)
        at java.lang.reflect.Method.invoke(Native Method)
        at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:438)
        at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:807)

【问题讨论】:

  • 这是 MainActivity
  • 堆栈跟踪中清楚地表达了问题。您正在对 null 对象调用 equals()。

标签: java android firebase android-layout exception


【解决方案1】:

检查您的主要活动的第 54 行。它试图与之交互的字符串为 null,因此您无法在其上调用方法或属性。

如果没有看到您的实际代码,我建议先进行保护性更改以检查 fo null,如下所示

String thisCouldBeNull = "Some value that could be null";
if ((thisCouldBeNull != null) && (thisCouldBeNull.equals("what you are checking")) {
// Do Something Positive
}

【讨论】:

  • 第 15 行 if(user.getImageURL().equals("default")){
  • 我覆盖了一个方法 onDataChange (@NonNull DataShot
  • 虽然这回答了问题,但解释如何摆脱 NPE 并没有用,因为这已包含在上述问题中。
  • 你必须从一个很乐意提供帮助的地方开始......你可以将你的代码更改为...... String userImage = user.getImageUrl(); if (userImage == null) { //Error handle as something may be wrong } else if (userImage.equals("defualt") { //Do what you need to do } Java 中的字符串可以为空,因此除非你知道该对象将始终为您提供一个有效的字符串(例如空或一个值),那么您应该保护 null 实例
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-10-27
  • 2017-08-04
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多