google map API停止在android studio中工作

问题描述

我有一个我正在为uni工作的项目,并且我包含一个具有地址的列表视图,当单击该列表视图时,该地址将显示为google maps。

这工作正常,我已经获得了api密钥并将其包含在我的项目中,并且能够在Google地图中指出该位置。

今天我尝试了它,但是它不再起作用,我收到了以下错误消息

java.lang.NullPointerException: Attempt to invoke interface method 'java.lang.Object java.util.List.get(int)' on a null object reference

(以下是完整的logcat错误

代码如下:

MaosActivity.java

public class MapsActivity extends FragmentActivity implements OnMapReadyCallback {
    private String address1;
    private GoogleMap mMap;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_maps);
        Intent intent = getIntent();
        address1 =intent.getStringExtra("address");
        System.out.println(address1);
        // Obtain the SupportMapFragment and get notified when the map is ready to be used.
        SupportMapFragment mapFragment = (SupportMapFragment) getSupportFragmentManager()
                .findFragmentById(R.id.map);
        mapFragment.getMapAsync(this);

    }

    @Override
    public void onMapReady(GoogleMap googleMap) {
        mMap = googleMap;
        Geocoder coder = new Geocoder(this);
        List<Address> address = null;

        String locationName = address1;
        Geocoder gc = new Geocoder(this);
        List<Address> addressList = null;
        try {
            addressList = coder.getFromLocationName(locationName,1);
        } catch (IOException e) {
            e.printstacktrace();
        }
        Address location = addressList.get(0);
        System.out.println(locationName);
        System.out.println(addressList.get(0));

        double latitude = location.getLatitude();
        double longitude = location.getLongitude();
        System.out.println(latitude);
        System.out.println(longitude);

        LatLng sydney = new LatLng(latitude,longitude);
        mMap.addMarker(new MarkerOptions().position(sydney).title("Marker in Sydney"));
        mMap.moveCamera(CameraUpdateFactory.newLatLngZoom(sydney,13));

    }
}

上面的获取意图请求将打印正确的地址。我没有更改代码,所以不确定为什么它停止工作,这就是为什么我认为这可能是一个api问题。

我的清单文件中也有这个

<Meta-data
            android:name="com.google.android.geo.API_KEY"
            android:value="@string/google_maps_key" />



<uses-permission android:name="android.permission.INTERNET" />
    <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
    <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
    <uses-permission
        android:name="com.google.android.providers.gsf.permission.READ_GSERVICES" />
    <!--
    The ACCESS_COARSE/FINE_LOCATION permissions are not required to use
    Google Maps Android API v2,but are recommended.
    -->
    <uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" />
    <uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />

这是完整的logcat错误

 java.lang.NullPointerException: Attempt to invoke interface method 'java.lang.Object java.util.List.get(int)' on a null object reference
        at com.example.assignment1.MapsActivity.onMapReady(MapsActivity.java:55)
        at com.google.android.gms.maps.zzak.zza(UnkNown Source)
        at com.google.android.gms.maps.internal.zzaq.dispatchTransaction(UnkNown Source)
        at com.google.android.gms.internal.maps.zzb.onTransact(UnkNown Source)
        at android.os.Binder.transact(Binder.java:387)
        at cg.b(:com.google.android.gms.dynamite_mapsdynamite@[email protected] (040700-0):2)
        at com.google.maps.api.android.lib6.impl.be.run(:com.google.android.gms.dynamite_mapsdynamite@[email protected] (040700-0):2)
        at android.os.Handler.handleCallback(Handler.java:739)
        at android.os.Handler.dispatchMessage(Handler.java:95)
        at android.os.Looper.loop(Looper.java:148)
        at android.app.ActivityThread.main(ActivityThread.java:5417)
        at java.lang.reflect.Method.invoke(Native Method)
        at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:726)
        at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:616)

有人知道为什么会发生此错误吗?

编辑:这里似乎发生了错误

try {
            addressList = coder.getFromLocationName(locationName,1);
        } catch (IOException e) {
            e.printstacktrace();
        }

在此之后的任何事情都是在应用力关闭时。

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)