Firebase crashlytics сообщает всего несколько раз о «Попытке вызвать виртуальный метод» (java.lang.Строка)’ по нулевой ссылке на объект»

#android #crashlytics

Вопрос:

Как вы можете видеть, я пытался контролировать, чтобы значение не было нулевым, но точно так же сообщения об ошибке все равно поступают. Но их немного.

Ошибка

 Caused by java.lang.NullPointerException: Attempt to invoke virtual method 'java.lang.String package...Token.getValor()' on a null object reference
   at ...NotificationListPresenter.obtainNotifications(NotificationListPresenter.java:2)
   at ...ListActivity.obtainNotifications(ListActivity.java:23)
   at android.app.Instrumentation.callActivityOnResume(Instrumentation.java:1454)
   at android.app.Activity.performResume(Activity.java:8111)
   at android.app.ActivityThread.performResumeActivity(ActivityThread.java:4647)
   at android.app.ActivityThread.handleResumeActivity(ActivityThread.java:4690)
   at android.app.servertransaction.ResumeActivityItem.execute(ResumeActivityItem.java:52)
   at android.app.servertransaction.TransactionExecutor.executeLifecycleState(TransactionExecutor.java:176)
   at android.app.servertransaction.TransactionExecutor.execute(TransactionExecutor.java:97)
   at android.app.ActivityThread$H.handleMessage(ActivityThread.java:2267)
   at android.os.Handler.dispatchMessage(Handler.java:107)
   at android.os.Looper.loop(Looper.java:237)
   at android.app.ActivityThread.main(ActivityThread.java:8167)
   at java.lang.reflect.Method.invoke(Method.java)
   at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:496)
   at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1100)
 

Центр уведомлений о коде

     public class NotificationListPresenter extends BasePresenter<NotificationListView> {

private BaseActivity activity = (BaseActivity) getView();

public NotificationListPresenter(NotificationListView viewInstance) {
    super(viewInstance);
}

public void obtainNotifications(){
    if(activity!= null amp;amp; activity.getData() != null amp;amp; activity.getData().getToken() != null) {
  NotificationService.getInstance().getList(activity.getData().getToken().getValor())
                .observeOn(AndroidSchedulers.mainThread())
                .subscribe(response -> {
                    something...
                }, err -> {
                    somethingIfError(err);
                });
    }
}
 

Активность списка

 public class ListActivity extends BaseActivity<ListPresenter>
    implements ListView, NotificationListView{


// onCreate and onResume call this method if necessary
private void obtainNotifications() {
  NotificationListPresenter notificationListPresenter = new NotificationListPresenter(this);
    notificationListPresenter.obtainNotifications();
}
 

Я больше не знаю, в чем может быть проблема 🙁

Ответ №1:

Вы должны заменить оператор if следующим. Поскольку .getValor() находится в нулевой ссылке на объект, вот почему вы столкнулись с этой проблемой сбоя.

  if(activity!= null amp;amp; activity.getData() != null amp;amp; activity.getData().getToken().getValor() != null)