2017-03-02 57 views
0

我在布局文件中得到这个错误与MapFragmentcom.google.android.gms.maps.MapsFragment无法实例

我试图

  • 安装谷歌Play业务,但仍然有错误

  • 在此之后solution仍然不起作用

我的应用程序能够运行,但是当我打开与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)

  • 。在java.lang.Class.getConstructor0(Class.java:3082)
  • 在java.lang.Class.getConstructor(Class.java:1825)
  • 在android.view.LayoutInflater.createViewFromTag(LayoutInflate r.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

+0

你应该使用支持地图片段,顺便说一下 –

回答

1
tools:context="layout.ContactFragment"> 

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

你有一个片段一个片段。

Android并不真的那么喜欢这个,所以无论你把<fragment class="layout.ContactFragment">(假设你已经做了),你可以用Google Map Fragment替换它,因为你在这个ContactFragment中唯一的视图就是Map Fragment。

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