首页 > 解决方案 > 空对象引用上的 Model.Result.getFormatted_address()'

问题描述

嗨,这是我在这里的第一个问题,我正在使用谷歌附近的地方应用程序,每次单击标记位置以获取详细信息时都会崩溃,是的,我已经在谷歌开发者 API 中启用了计费

日志猫

java.lang.NullPointerException: Attempt to invoke virtual method 'java.lang.String com.example.androidnearbyplaces.Model.Result.getFormatted_address()' on a null object reference
        at com.example.androidnearbyplaces.ViewPlace$2.onResponse(ViewPlace.java:88)
        at retrofit2.DefaultCallAdapterFactory$ExecutorCallbackCall$1.lambda$onResponse$0$DefaultCallAdapterFactory$ExecutorCallbackCall$1(DefaultCallAdapterFactory.java:81)
        at retrofit2.-$$Lambda$DefaultCallAdapterFactory$ExecutorCallbackCall$1$3wC8FyV4pyjrzrYL5U0mlYiviZw.run(Unknown Source:6)
        at android.os.Handler.handleCallback(Handler.java:883)
        at android.os.Handler.dispatchMessage(Handler.java:100)
        at android.os.Looper.loop(Looper.java:214)
        at android.app.ActivityThread.main(ActivityThread.java:7356)
        at java.lang.reflect.Method.invoke(Native Method)
        at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:492)
        at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:930)

这是 ViewPlace.java:88

mService.getDetailPlace(getPlaceDetailUrl(Common.currentResult.getPlace_id())).enqueue(new Callback<PlaceDetail>() {
            @Override
            public void onResponse(Call<PlaceDetail> call, Response<PlaceDetail> response) {
                mPlace = response.body();
                place_address.setText(mPlace.getResult().getFormatted_address());
                place_name.setText(mPlace.getResult().getName());

            }

            @Override
            public void onFailure(Call<PlaceDetail> call, Throwable t) {

            }
        });

标签: javaandroid

解决方案


快速解释:

mPlace.getResult()正在回归null。NullPointerException 被抛出,因为你不能做null.getFormattedAddress()。您不能null在 Java 中调用任何方法。

为什么会返回null?如果没有看到更多代码,我无法确定。

请阅读更多关于 NullPointerException 的信息,也许在这里


推荐阅读