我有Android應用程序,我在我的設備上開發了幾個月API 19的工作。現在,當我得到API 22的新手機除Google地圖以外的所有作品。這個API有谷歌地圖有什麼特別之處,或者我做錯了什麼?在應用程序設置,我有Android地圖適用於API 19但不適用於API 22
minSdkVersion 15
targetSdkVersion 23
dependencies {
compile fileTree(include: ['*.jar'], dir: 'libs')
compile 'com.android.support:appcompat-v7:23.0.1'
compile 'com.google.android.gms:play-services:7.8.0'
//tried this but still wont work
//compile 'com.google.android.gms:play-services:8.4.0'
}
碼在地圖的活動是和我有評論//其中發生錯誤的電話
public class MapLocation extends FragmentActivity {
private GoogleMap mMap; // Might be null if Google Play services APK is not available.
public Double lat;
public Double log;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_map_location);
setUpMapIfNeeded();
Intent i = getIntent();
lat = Double.parseDouble(i.getStringExtra("lat"));
log = Double.parseDouble(i.getStringExtra("log"));
centerMapOnMyLocation();
}
@Override
protected void onResume() {
super.onResume();
setUpMapIfNeeded();
}
private void setUpMapIfNeeded() {
if (mMap == null) {
mMap = ((SupportMapFragment) getSupportFragmentManager().findFragmentById(R.id.map))
.getMap();
if (mMap != null) {
setUpMap();
}
}
}
private void setUpMap() {
mMap.setMapType(GoogleMap.MAP_TYPE_SATELLITE);
}
private void centerMapOnMyLocation() {
//HERE is ERROR when checking log of phone
//HERE is ERROR when checking log of phone
//HERE is ERROR when checking log of phone
//HERE is ERROR when checking log of phone
mMap.setMyLocationEnabled(true);
if (!(lat == 0.0 || log == 0.0)) {
CameraUpdate zoom=CameraUpdateFactory.zoomTo(18);
CameraUpdate myLocation= CameraUpdateFactory.newLatLng(new LatLng(lat,log));
mMap.moveCamera(myLocation);
mMap.animateCamera(zoom);
mMap.addMarker(new MarkerOptions().position(new LatLng(lat, log)).title("Title"));
Toast.makeText(this, "Map positioned", Toast.LENGTH_LONG).show();
}
else
{
Toast.makeText(this, "no location", Toast.LENGTH_LONG).show();
}
}
}
登錄
的Java。 lang.RuntimeException:無法啓動活動ComponentInfo {com.smth/com.smth.MapLocation}:java.lang.NullPointerException:試圖調用virtua l在android.app.ActivityThread的android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2325) 上的null對象引用 上的方法'void com.google.android.gms.maps.GoogleMap.setMyLocationEnabled(boolean)'。在android.app.ActivityThread.access $ handleHandlerActivity(ActivityThread.java:2387) $ 800(ActivityThread.java:151) at android.app.ActivityThread $ H.handleMessage(ActivityThread.java:1303) at android.os.Handler .dispatchMessage(Handler.java:102) at android.os.Looper.loop(Looper.java:135) at android.app.ActivityThread.main(ActivityThread.java:5255) at java.lang.reflect.Method .invoke(Native Method) 在java.lang.reflect.Method.invoke(Method.java:372) 在com.android.internal.os.ZygoteInit $ MethodAndArgsCaller.run(ZygoteInit.java:905) 在com.android.internal.os。 ZygoteInit.main(ZygoteInit.java:700) 引起:java.lang.NullPointerException:試圖在空對象引用 上調用虛擬方法'void com.google.android.gms.maps.GoogleMap.setMyLocationEnabled(boolean)' at com.smth.MapLocation.centerMapOnMyLocation(MapLocation.java:83) at com.vodovod.ivan.watercounter.MapLocation.onCreate(MapLocation.java:30) at android.app.Activity.performCreate(Activity.java:6036 ) at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1 106) at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2278) at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2387) at android.app.ActivityThread.access $ 800(ActivityThread.java:151 )android.app.ActivityThread $ hHandleMessage(ActivityThread.java:1303) at android.os.Handler.dispatchMessage(Handler.java:102) at android.os.Looper.loop(Looper.java:135 ) at android.app.ActivityThread.main(ActivityThread.java:5255) at java.lang.reflect.Method.invoke(Native Method) at java.lang.reflect.Method.invoke(Method.java:372) at com.android.internal.os.ZygoteInit $ MethodAndArgsCaller.run(ZygoteInit.java:905) at com.android.internal.os.ZygoteInit.main(ZygoteInit。Java的:700)
地圖
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical"
android:keepScreenOn="true">
<fragment xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent"
android:layout_height="match_parent" android:id="@+id/map"
tools:context="com.vodovod.ivan.watercounter.MapLocation"
android:name="com.google.android.gms.maps.SupportMapFragment"
android:keepScreenOn="true" />
</LinearLayout>
地圖暫時不可供您使用,這就是爲什麼它表示您正在調用空對象。覆蓋onMapReady方法,並在該方法中調用setMyLocationEnabled。 – Fustigador
我無法重寫該方法。這是爲什麼? – KuKeC
對不起,您需要實現OnMapReadyCallback接口 – Fustigador