2016-07-06 71 views
-1

嗨,我是想实现谷歌的教程这里后,谷歌地图在我的Android应用程序(Android Studio中): https://developers.google.com/maps/documentation/android-api/map#mapfragment的Android实现谷歌地图与片段

这是我的布局文件(我已经加入谷歌游戏服务和API密钥,似乎有关于这个没有错误)

<?xml version="1.0" encoding="utf-8"?> 
<RelativeLayout 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:background="@drawable/background1000px" 
    android:paddingBottom="0dp" 
    android:paddingLeft="0dp" 
    android:paddingRight="@dimen/activity_horizontal_margin" 
    android:paddingTop="@dimen/activity_vertical_margin" 
    tools:context="com.zuercher.zuerchertechnik.Display_product"> 

<TextView 
    android:layout_width="match_parent" 
    android:layout_height="wrap_content" 
    android:background="@drawable/box400x50" 
    android:id="@+id/title" 
    android:layout_marginLeft="@dimen/activity_horizontal_margin" 
    android:adjustViewBounds="true" 
    android:layout_alignParentTop="true" 
    android:layout_alignParentLeft="true" 
    android:layout_alignParentStart="true" 
    android:layout_alignParentEnd="false" 
    android:layout_alignParentRight="false" 
    android:text="@string/kontakt" 
    android:padding="10dp" 
    android:textColor="@color/black" 
    android:textSize="24sp" 
    android:paddingTop="5dp" 

    /> 

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

这里是为活动我java代码:

package com.zuercher.zuerchertechnik; 

import android.support.v4.app.FragmentActivity; 
import android.support.v4.app.FragmentManager; 
import android.support.v7.app.AppCompatActivity; 
import android.os.Bundle; 
import android.view.LayoutInflater; 
import android.view.View; 
import android.view.ViewGroup; 

import com.google.android.gms.maps.GoogleMap; 
import com.google.android.gms.maps.GoogleMapOptions; 
import com.google.android.gms.maps.MapFragment; 
import com.google.android.gms.maps.OnMapReadyCallback; 
import com.google.android.gms.maps.SupportMapFragment; 
import com.google.android.gms.maps.model.CameraPosition; 
import com.google.android.gms.maps.model.LatLng; 

public class Display_contact extends FragmentActivity implements OnMapReadyCallback { 

@Override 

protected void onCreate(Bundle savedInstanceState) { 

    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_display_contact); 
    MapFragment mapFragment = (MapFragment) getFragmentManager().findFragmentById(R.id.map2); 
    mapFragment.getMapAsync(this); 
} 

@Override 
public void onMapReady(GoogleMap googleMap) { 



} 
} 

我总是得到almose着名的空指针异常,并且真的尝试了很多不同的组合,但是我在这里变得绝望......(出乎意料的是,在google教程中根本没有帮助......) 我是什么在这里失踪?

感谢

新添加的堆栈跟踪代码

FATAL EXCEPTION: main 
                       Process: com.zuercher.zuerchertechnik, PID: 19745 
                      java.lang.RuntimeException: Unable to start activity ComponentInfo{com.zuercher.zuerchertechnik/com.zuercher.zuerchertechnik.Display_contact}: java.lang.NullPointerException: Attempt to invoke virtual method 'void com.google.android.gms.maps.MapFragment.getMapAsync(com.google.android.gms.maps.OnMapReadyCallback)' on a null object reference 
                       at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2656) 
                       at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2721) 
                       at android.app.ActivityThread.access$900(ActivityThread.java:168) 
                       at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1393) 
                       at android.os.Handler.dispatchMessage(Handler.java:102) 
                       at android.os.Looper.loop(Looper.java:135) 
                       at android.app.ActivityThread.main(ActivityThread.java:5753) 
                       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:1405) 
                       at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1200) 
                      Caused by: java.lang.NullPointerException: Attempt to invoke virtual method 'void com.google.android.gms.maps.MapFragment.getMapAsync(com.google.android.gms.maps.OnMapReadyCallback)' on a null object reference 
                       at com.zuercher.zuerchertechnik.Display_contact.onCreate(Display_contact.java:41) 
                       at android.app.Activity.performCreate(Activity.java:6112) 
                       at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1117) 
                       at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2609) 
                       at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2721)  
                       at android.app.ActivityThread.access$900(ActivityThread.java:168)  
                       at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1393)  
                       at android.os.Handler.dispatchMessage(Handler.java:102)  
                       at android.os.Looper.loop(Looper.java:135)  
                       at android.app.ActivityThread.main(ActivityThread.java:5753)  
                       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:1405)  
                       at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1200)  
+0

你能否粘贴你的'NullPointerException'堆栈跟踪呢? – StuStirling

+0

已添加,对于页面组织中的糟糕对不起,但它只是'跳'到正确的。 – nightslit

回答

0

为了使用谷歌地图中的片段,您必须使用此代码:

MapFragment= ((MapFragment) getChildFragmentManager().findFragmentById(R.id.map2)); 

    MapFragment.getMapAsync(new OnMapReadyCallback() { 
     @Override 
     public void onMapReady(GoogleMap googleMap) { 

     } 
    }); 
+0

getChildFragmentManager在我的Android Studio中找不到.. – nightslit

+0

尝试扩展类Fragment并实现onCreateView,为什么要扩展FragmentActivity? – Vasilisfoo

+0

所以它没有更多的扩展FragementActivity实现OnMapReadyCallback,但只是扩展Fragment? – nightslit

0

尝试增加

static GoogleMap mMap; 

是前您的onCreate,然后在onMapReady

mMap = googleMap; 
+0

我必须如何实现这一点?如果我添加这个静态GoogleMap mMap;它不会更改空指针异常。 – nightslit

0

尝试使用getSupportFragmentManagergetFragmentManager

0

您必须扩展AppCompatActivity能够采取getFragmentManager否则,如果你想使用FragmentActivity请使用getSupportFragmentManager()。的FragmentActivity文档说:

当使用这个类,而不是新的平台内置的片段和装载机的支持,你必须使用getSupportFragmentManager()和getSupportLoaderManager()方法分别访问这些功能。