com.google.android.gms.maps.MapsFragment无法实例化

时间:2017-03-02 03:25:48

标签: java android google-maps

我在使用MapFragment

的布局文件中出现此错误

我试过

  • 安装Google Play服务,但仍有错误

  • 此后solution仍然无效

我的应用程序能够运行,但是当我打开Fragment并使用MapFragment应用程序停止工作时

完整错误

  

渲染问题

     

无法实例化以下类:

     

- com.google.android.gms.maps.MapFragment(Open Class,Show Exception,Clear Cache)

     

提示:在自定义视图中使用View.isInEditMode()   在IDE中显示时跳过代码或显示示例数据。

     

如果这是意外错误,您还可以尝试构建项目,然后手动刷新布局。

     

例外详细信息

     

java.lang.NoSuchMethodException:   com.google.android.gms.maps.MapFragment。(android.content.Context,android.util.AttributeSet)

     
      
  • at java.lang.Class.getConstructor0(Class.java:3082)
  •   
  • at java.lang.Class.getConstructor(Class.java:1825)<< li>   
  • 在android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:727)
  •   
  • 在android.view.LayoutInflater.rInflate_Original(LayoutInflater.java:858)
  •   
  • 在android.view.LayoutInflater_Delegate.rInflate(LayoutInflater_Delegate.java:70)
  •   
  • 在android.view.LayoutInflater.rInflate(LayoutInflater.java:834)
  •   
  • 在android.view.LayoutInflater.rInflateChildren(LayoutInflater.java:821)
  •   
  • 在android.view.LayoutInflater.inflate(LayoutInflater.java:518)
  •   
  • 在android.view.LayoutInflater.inflate(LayoutInflater.java:397)
  •   
     

将堆栈复制到剪贴板

fragment_contact.xml

<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"
    tools:context="layout.ContactFragment">


    <com.google.android.gms.maps.MapFragment
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:id="@+id/mapFragment"
        android:layout_alignParentTop="true"
        android:layout_alignParentStart="true" />
</RelativeLayout>

的AndroidManifest.xml

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    package="com.ng.anthony.mininavigationdrawer" >
    <uses-permission android:name="android.permission.INTERNET" />
    <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
    <uses-permission android:name="com.google.android.providers.gsf.permission.READ_GSERVICES"/>
    <uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION"/>
    <uses-permission android:name="android.permission.ACCESS_FINE_LOCATION"/>
    <permission
        android:name="com.example.permission.MAPS_RECEIVE"
        android:protectionLevel="signature"/>
    <uses-permission android:name="com.example.permission.MAPS_RECEIVE"/>

    <application
        android:allowBackup="true"
        android:icon="@mipmap/ic_launcher"
        android:label="@string/app_name"
        android:supportsRtl="true"
        android:theme="@style/AppTheme"
        android:screenOrientation="portrait">
        <activity
            android:name="com.th.ac.sd.MainActivity"
            android:label="@string/app_name"
            android:theme="@style/AppTheme.NoActionBar" >
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />

                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
        </activity>
    </application>

</manifest>

build.gradle(app)

apply plugin: 'com.android.application'

android {
    compileSdkVersion 25
    buildToolsVersion "23.0.2"
    0
    defaultConfig {
        applicationId "com.th.ac.sd"
        minSdkVersion 21
        targetSdkVersion 25
        versionCode 1
        versionName "1.0"
    }
    buildTypes {
        release {
            minifyEnabled false
            proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
        }
    }
}

dependencies {
    compile fileTree(dir: 'libs', include: ['*.jar'])
    compile 'com.android.support:appcompat-v7:25.2.0'
    compile 'com.android.support:design:25.2.0'
    compile 'com.android.support:support-v4:25.2.0'
    testCompile 'junit:junit:4.12'
    compile 'com.google.android.gms:play-services-maps:10.2.0'
}

已安装的SDK工具

enter image description here

1 个答案:

答案 0 :(得分:1)

tools:context="layout.ContactFragment">

    <com.google.android.gms.maps.MapFragment

你在片段中有一个片段。

Android并不是那么喜欢,所以无论你把<fragment class="layout.ContactFragment">放在哪里(假设你这样做),你可以用谷歌地图片段替换它,因为你在这个ContactFragment中唯一的观点是无论如何,地图片段。

否则,您可以使用FrameLayout并动态加载new SupportMapFragment,就像任何其他片段一样。