2017-03-02 43 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一樣。