在MapFragment中填充类片段时出错

时间:2013-11-20 12:36:45

标签: android google-maps

我的MapFragment

有xml文件
<?xml version="1.0" encoding="utf-8"?>
<fragment
    android:id="@+id/map"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    class="com.google.android.gms.maps.MapFragment" />

和片段使用它:

public class CallistoMapFragment extends MapFragment {
private GoogleMap mMap;

@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
        Bundle savedInstanceState) {
    View v = inflater.inflate(R.layout.map_fragment, null);
    mMap = ((MapFragment) getFragmentManager().findFragmentById(R.id.map))
            .getMap();
    setUpMap();
    return v;
}

private void setUpMap() {
    mMap.addMarker(new MarkerOptions().position(new LatLng(0, 0)).title(
            "Marker"));
}

} 在尝试编译时获取错误

  

11-20 15:31:15.343:E / AndroidRuntime(10705):android.view.InflateException:二进制XML文件行#6:错误膨胀类片段

Android清单中的API密钥是对的。怎么了?

7 个答案:

答案 0 :(得分:4)

使用:

XML:

<fragment
        android:id="@+id/map"
        android:name="com.google.android.gms.maps.SupportMapFragment"
        android:layout_width="fill_parent"
        android:layout_height="fill_parent"
        android:clickable="true"
         />

GoogleMap mMap;
SupportMapFragment mapFrag;

Now set it:

if (mMap == null) {
            mapFrag= (SupportMapFragment)getSupportFragmentManager().findFragmentById(R.id.map);
            mMap =  mapFrag.getMap();

            // Check if we were successful in obtaining the map.
            if (mMap != null) {
                // The Map is verified. It is now safe to manipulate the map.

            }
        }

还要在清单文件中添加此元标记。

 <meta-data
            android:name="com.google.android.gms.version"
            android:value="@integer/google_play_services_version" />

<meta-data
            android:name="com.google.android.maps.v2.API_KEY"
            android:value="myApiKey"/> 

答案 1 :(得分:1)

在我的情况下,问题出在我的元数据标签自动放置在应用程序标签之外,如下所示。

<application android:label="My.Mobile"></application>
<meta-data
        android:name="com.google.android.maps.v2.API_KEY"
        android:value="myApiKey"/> 

在将元数据标签放入应用程序标签问题后消失了:

<application android:label="My.Mobile">
<meta-data
        android:name="com.google.android.maps.v2.API_KEY"
        android:value="myApiKey"/>
</application>

答案 2 :(得分:0)

尝试:在应用标记

中的清单中添加此内容
<meta-data android:name="com.google.android.gms.version"
            android:value="@integer/google_play_services_version" />

答案 3 :(得分:0)

将项目参考Google Play服务添加到您的项目中......

答案 4 :(得分:0)

请参阅本文档中的this link分步过程。

答案 5 :(得分:0)

如果依赖关系显示警告或错误,那么您必须将其更改为最新状态,如...

变化

compile 'com.google.android.gms:play-services-maps:6.5.87'

 compile  'com.google.android.gms:play-services-maps:8.4.0'

它为我工作。

答案 6 :(得分:0)

尝试了将近 1 天后,我在 build.xml 中发现了一个问题。问题在于我的库版本...

implementation 'androidx.appcompat:appcompat:1.2.0'
implementation 'com.google.android.material:material:1.2.1'           <-
implementation 'androidx.constraintlayout:constraintlayout:2.0.4'     
implementation 'androidx.legacy:legacy-support-v4:1.0.0'              <-
implementation 'androidx.navigation:navigation-fragment:2.2.2'        <-
implementation 'androidx.navigation:navigation-ui:2.2.2'              <-
implementation testImplementation 'junit:junit:4.+'
implementation androidTestImplementation 'androidx.test.ext:junit:1.1.2'
implementation androidTestImplementation 'androidx.test.espresso:espresso-core:3.3.0'
implementation 'com.google.android.gms:play-services-maps:16.0.0'
implementation 'com.google.android.gms:play-services-location:16.0.0'