に私はAPI 22でGoogleマップを除くすべての作品を新しい携帯電話を得たときに今、API 19上で動作します私のデバイス上で数ヶ月に開発Androidアプリケーションを持っていません。このAPIのGoogleマップに特別なものがありますか、何か間違っていますか?アプリケーションでは、私はマップの活動のために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'
}
コードを持っている設定であると私はエラーが電話
のjavaの
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(); } }
}
ログをたまたまコメント//を持っています。 lang.RuntimeException:活性ComponentInfoを開始できません{com.smth/com.smth.MapLocation}:java.lang.NullPointerExceptionが:バーチャを起動しようとしlメソッドヌルオブジェクト参照で 'void com.google.android.gms.maps.GoogleMap.setMyLocationEnabled(boolean)'とandroid.app.ActivityThreadにandroid.app.ActivityThread.performLaunchActivity(ActivityThread.java:2325) の があります。 $$(ActivityThread.java:151) at android.app.ActivityThread $ H.handleMessage(ActivityThread.java:1303) at android.os.Handler .dispatchMessage(Handler.java:102) とandroid.os.Looper.loop(Looper.java:135) とandroid.app.ActivityThread.main(ActivityThread.java:5255) at java.lang.reflect.Method .invoke(ネイティブメソッド) 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:NULLオブジェクト参照で仮想メソッド 'void com.google.android.gms.maps.GoogleMap.setMyLocationEnabled(boolean)'を呼び出そうとしました com.smth.MapLocation.centerMapOnMyLocation(MapLocation.java:83) com.vodovod.ivan.watercounter.MapLocation.onCreate(MapLocation.java:30) at android.app.Activity.performCreate(Activity.java:6036) android.app.Instrumentation.callActivityOnCreateで) (Instrumentation.java:1 android.app.ActivityThread.access $ 800からandroid.app.ActivityThread.handleLaunchActivityでandroid.app.ActivityThread.performLaunchActivity(ActivityThread.java:2278) (ActivityThread.java:2387) (ActivityThread.java:151における106) android.os.Looper.loop(Looper.java:135でandroid.os.Handler.dispatchMessageでandroid.app.ActivityThread $ H.handleMessage(ActivityThread.java:1303) (Handler.java:102) で) ) at android.app.ActivityThread.main(ActivityThread.java:5255) at java.lang.reflect.Method.invoke(ネイティブメソッド) at java.lang.reflect.Method.invoke(Method.java:372)com.android.internal.os.ZygoteInit.mainでcom.android.internal.os.ZygoteInit $ MethodAndArgsCaller.run(ZygoteInit.java:905) (ZygoteInitで。Javaの:マップオブジェクトがまだ初期化されていないため@Fustigadorで述べたように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>
マップがすぐに使用できるわけではありません。そのため、nullオブジェクトを呼び出していると言われています。 onMapReadyメソッドをオーバーライドし、そのメソッドでsetMyLocationEnabledを呼び出します。 – Fustigador
私はそのメソッドをオーバーライドできません。何故ですか? – KuKeC
申し訳ありませんが、あなたはOnMapReadyCallbackインターフェイスを実装する必要があります – Fustigador