2014-02-10 5 views
1

Итак, я пытаюсь создать приложение для Android, которое будет считывать множество данных полета и представлять данные на картах Google с помощью маркеров.Android Google Maps Fatal Exception

В настоящее время я не могу много сделать, я могу создать приложение, отображающее карты Google, и смог установить начальное местоположение с использованием XML.

Я не могу добавить маркеры, хотя он просто падает.

package com.fly.plane; 

import com.fly.plane.R; 
import com.google.android.gms.maps.GoogleMap; 

import com.google.android.gms.maps.model.LatLng; 
import com.google.android.gms.maps.model.MarkerOptions; 


import android.os.Bundle; 
import android.support.v4.app.FragmentActivity; 

public class MyMapActivity extends FragmentActivity { 
GoogleMap mMap; 

@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_my_map); 

// without this next line, it will work: 
     mMap.addMarker(new MarkerOptions() 
     .position(new LatLng(0, 0)) 
     .title("Hello world")); 
} 

} 

и XML

<?xml version="1.0" encoding="utf-8"?> 
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" 
android:layout_width="fill_parent" 
android:layout_height="fill_parent" > 

<fragment 
    android:id="@+id/map" 
    android:name="com.google.android.gms.maps.MapFragment" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent"/> 

</RelativeLayout> 

Вот журнал ошибок:

02-10 22:31:28.433: E/AndroidRuntime(13131): FATAL EXCEPTION: main 
02-10 22:31:28.433: E/AndroidRuntime(13131): java.lang.RuntimeException: Unable to start activity ComponentInfo{com.fly.plane/com.fly.plane.MyMapActivity}: java.lang.NullPointerException 
02-10 22:31:28.433: E/AndroidRuntime(13131): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2295) 
02-10 22:31:28.433: E/AndroidRuntime(13131): at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2349) 
02-10 22:31:28.433: E/AndroidRuntime(13131): at android.app.ActivityThread.access$700(ActivityThread.java:159) 
02-10 22:31:28.433: E/AndroidRuntime(13131): at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1316) 
02-10 22:31:28.433: E/AndroidRuntime(13131): at android.os.Handler.dispatchMessage(Handler.java:99) 
02-10 22:31:28.433: E/AndroidRuntime(13131): at android.os.Looper.loop(Looper.java:137) 
02-10 22:31:28.433: E/AndroidRuntime(13131): at android.app.ActivityThread.main(ActivityThread.java:5419) 
02-10 22:31:28.433: E/AndroidRuntime(13131): at java.lang.reflect.Method.invokeNative(Native Method) 
02-10 22:31:28.433: E/AndroidRuntime(13131): at java.lang.reflect.Method.invoke(Method.java:525) 
02-10 22:31:28.433: E/AndroidRuntime(13131): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1187) 
02-10 22:31:28.433: E/AndroidRuntime(13131): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1003) 
02-10 22:31:28.433: E/AndroidRuntime(13131): at dalvik.system.NativeStart.main(Native Method) 
02-10 22:31:28.433: E/AndroidRuntime(13131): Caused by: java.lang.NullPointerException 
02-10 22:31:28.433: E/AndroidRuntime(13131): at com.fly.plane.MyMapActivity.onCreate(MyMapActivity.java:21) 
02-10 22:31:28.433: E/AndroidRuntime(13131): at android.app.Activity.performCreate(Activity.java:5372) 
02-10 22:31:28.433: E/AndroidRuntime(13131): at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1104) 
02-10 22:31:28.433: E/AndroidRuntime(13131): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2257) 
02-10 22:31:28.433: E/AndroidRuntime(13131): ... 11 more 

Im не очень сильны в Java/андроида развития, так что любая помощь на том, что причиной этого была бы оценена.

С уважением

Фил

ответ

1

линии отсутствует:

mMap = ((MapFragment) getFragmentManager().findFragmentById(R.id.map)).getMap(); 

Ваш метод onCreate() должен быть как:

private GoogleMap mMap; 

@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_my_map); 

//Add this line. 
mMap = ((MapFragment) getFragmentManager().findFragmentById(R.id.map)).getMap(); 

     mMap.addMarker(new MarkerOptions() 
     .position(new LatLng(0, 0)) 
     .title("Hello world")); 
} 
+0

Спасибо за это, он работает сейчас! – Phil

1

Я использую ниже, чтобы добавить маркеры.

mMap = getMap(); 
mMap.addMarker(new MarkerOptions().position(new LatLng(lat, lng)).title(tit).draggable(true).snippet(String.valueOf(id)) 

Я думаю, вам просто нужно инициализировать MMAP перед добавлением маркеров

1

сбоев ваше приложение, потому что вы забудете initialized a Map Objec t. Вам следует добавить, что

mMap = ((MapFragment) getFragmentManager().findFragmentById(R.id.map)).getMap(); 

в ваш Activity onCreate(). Вот и все.

1

Вы забыли инициализировать карту:

mMap = ((MapFragment) getFragmentManager().findFragmentById(R.id.map)).getMap(); 

Запишите это в вашем OnCreate() menthod

0

Добавить инициализацию объекта Map в OnCreate метод вашей деятельности:

mMap = ((MapFragment) getFragmentManager().findFragmentById(R.id.map)).getMap();