【问题标题】:Instantiating Geocoder causes NullPointerException实例化地理编码器导致 NullPointerException
【发布时间】:2015-07-07 07:59:51
【问题描述】:

实例化Geocoder 会导致我的应用因NullPointerException 而崩溃。

这是我的代码(仅单个 Activity):

public class MapsActivity extends FragmentActivity implements OnMapReadyCallback {

    private final int MAX_RESULTS = 1;

    //if I comment out the following line, app will not crash
    private Geocoder geocoder = new Geocoder(getApplicationContext()); //line 27

    private GoogleMap gmap;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_maps);
        SupportMapFragment mapFragment = (SupportMapFragment) getSupportFragmentManager().findFragmentById(R.id.map);
        mapFragment.getMapAsync(this);
    }

    @Override
    public void onMapReady(GoogleMap map) {
        setUpMap(map);
        gmap = map;
    }

    ...
}

我尝试过new Geocoder(getBaseContext())new Geocoder(this)new Geocoder(MapsActivity.this),但它们都崩溃了。如何解决这个问题?

日志猫:

Caused by: java.lang.NullPointerException
            at android.content.ContextWrapper.getPackageName(ContextWrapper.java:135)
            at android.location.GeocoderParams.<init>(GeocoderParams.java:50)
            at android.location.Geocoder.<init>(Geocoder.java:83)
            at android.location.Geocoder.<init>(Geocoder.java:95)
            at rubiks.cres.MapsActivity.<init>(MapsActivity.java:27)

【问题讨论】:

  • 我是白痴。它与地理编码器无关

标签: android google-maps geocoding google-geocoder


【解决方案1】:

将初始化移入onCreate

private Geocoder geocoder;

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_maps);
    geocoder = new Geocoder(this);
    SupportMapFragment mapFragment = (SupportMapFragment)getSupportFragmentManager().findFragmentById(R.id.map);
    mapFragment.getMapAsync(this);
}

如果Activity 创建未完成,getApplicationContext() 可能会返回null

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2012-02-18
    • 1970-01-01
    • 1970-01-01
    • 2015-05-05
    • 1970-01-01
    • 1970-01-01
    • 2021-12-03
    • 2016-04-15
    相关资源
    最近更新 更多