问题描述
我有一个我正在为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 (将#修改为@)