如何在ConstraintLayout中显示GoogleMap?

时间:2017-11-07 20:02:01

标签: android android-fragments android-mapview android-fragmentactivity mapactivity

我创建了一个新项目" MapsActivity"。我从Google获取了API密钥,将API密钥放在YOUR_KEY_HERE区域内的google_maps_API.xml(debug)中。我在AndroidManifest中看到它在那里。然后我去构建/运行应用程序并崩溃。

我甚至没有编码任何东西。

根据Android Monitor的崩溃报告:

 Caused by: java.lang.NullPointerException: Attempt to invoke virtual method 'void com.google.android.gms.maps.SupportMapFragment.getMapAsync(com.google.android.gms.maps.OnMapReadyCallback)' on a null object reference
                                                 at com.example.mikedouglas.maps.MapsActivity.onCreate(MapsActivity.java:24)

所以我点击MapsActivity.java:24,它带我到以下地方:

[![在此处输入图像说明] [1]] [1]

请记住,我还没有触及任何代码,只是创建了这个新项目,只在我应该添加API密钥并单击构建/运行然后崩溃。这是Google创建的崩溃代码。

我查看了StackOverflow并尝试从getSupportFragmentManager更改为getChildFragmentManager,正如人们所说的那样,并且它不起作用。

activity_maps.xml文件:

<android.support.constraint.ConstraintLayout      xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:map="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:id="@+id/map"
android:name="com.google.android.gms.maps.SupportMapFragment"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context="com.example.mikedouglas.maps.MapsActivity" />

出了什么问题?我需要改变什么?

编辑:

标记允许布局文件在运行时动态包含不同的布局。在布局编辑时,使用的特定布局是未知的。您可以在编辑布局时选择要预览的布局。

  • &LT;分段 com.google.android.gms.maps.SupportMapFragment ...&GT; (选择布局)

1 个答案:

答案 0 :(得分:1)

您需要将Fragment放在ConstraintLayout中:

<android.support.constraint.ConstraintLayout      
    xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:map="http://schemas.android.com/apk/res-auto"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    tools:context="com.example.mikedouglas.maps.MapsActivity">

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

</android.support.constraint.ConstraintLayout>