使用SupportMapFragment填充类片段时出错

时间:2016-01-17 06:46:43

标签: android fragment supportmapfragment

这是另一个“使用SupportMapFragment填充类片段的错误”问题。

这是我的片段XML:

const

这是我的活动(它是从主活动中的NavigationDrawer开始的):

<fragment
    xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:id="@+id/map"
    class="com.google.android.gms.maps.SupportMapFragment"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    tools:context="com.myapp.maptest.MapsActivity" />

以下是我的清单的相关部分:

public class MapsActivity extends AppCompatActivity implements OnMapReadyCallback, GoogleMap.OnMapLongClickListener {

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_maps);
    SupportMapFragment mapFragment = (SupportMapFragment) getSupportFragmentManager().findFragmentById(R.id.map);
    mapFragment.getMapAsync(this);
}

显然有一个真正的钥匙没有XXX

这是build.gradle的一些相关代码:

<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.READ_CONTACTS" />
<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />
<uses-permission android:name="android.permission.WAKE_LOCK" />
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"/>
<application
    android:name="com.myapp.maptest.AppControl"
    android:icon="@drawable/ic_launcher"
    android:label="@string/app_name"
    android:theme="@style/MyTheme"
    android:allowBackup="false">
    <meta-data
        android:name="com.google.android.gms.version"
        android:value="@integer/google_play_services_version" />
    <meta-data
        android:name="com.google.android.geo.API_KEY"
        android:value="XXX"/>
    <uses-library android:name="com.google.android.maps" />

这里是错误日志(抱歉格式混乱。复制并粘贴):

defaultConfig {
    applicationId "com.myapp.maptest"
    minSdkVersion 16
    targetSdkVersion 23
    versionCode 7
    versionName "1.5"
}
dependencies {
    compile fileTree(include: ['*.jar'], dir: 'libs')
    testCompile 'junit:junit:4.12'
    compile 'com.android.support:appcompat-v7:23.1.1'
    compile 'com.android.support:support-v4:23.1.1'
    compile 'com.android.support:design:23.1.1'
    compile 'com.google.android.gms:play-services:7.5.0'
}

日志中的其他内容:

01-16 22:49:05.431 10672-10672/com.myapp.maptest E/AndroidRuntime: FATAL EXCEPTION: main
                                                                 Process: com.myapp.maptest, PID: 10672
                                                                 java.lang.RuntimeException: Unable to start activity ComponentInfo{com.myapp.maptest/com.myapp.maptest.MapsActivity}: android.view.InflateException: Binary XML file line #1: Binary XML file line #1: Error inflating class fragment
                                                                     at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2416)
                                                                     at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2476)
                                                                     at android.app.ActivityThread.-wrap11(ActivityThread.java)
                                                                     at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1344)
                                                                     at android.os.Handler.dispatchMessage(Handler.java:102)
                                                                     at android.os.Looper.loop(Looper.java:148)
                                                                     at android.app.ActivityThread.main(ActivityThread.java:5417)
                                                                     at java.lang.reflect.Method.invoke(Native Method)
                                                                     at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:726)
                                                                     at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:616)
                                                                  Caused by: android.view.InflateException: Binary XML file line #1: Binary XML file line #1: Error inflating class fragment
                                                                     at android.view.LayoutInflater.inflate(LayoutInflater.java:539)
                                                                     at android.view.LayoutInflater.inflate(LayoutInflater.java:423)
                                                                     at android.view.LayoutInflater.inflate(LayoutInflater.java:374)
                                                                     at android.support.v7.app.AppCompatDelegateImplV7.setContentView(AppCompatDelegateImplV7.java:256)
                                                                     at android.support.v7.app.AppCompatActivity.setContentView(AppCompatActivity.java:109)
                                                                     at com.myapp.maptest.MapsActivity.onCreate(MapsActivity.java:35)
                                                                     at android.app.Activity.performCreate(Activity.java:6237)
                                                                     at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1107)
                                                                     at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2369)
                                                                     at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2476) 
                                                                     at android.app.ActivityThread.-wrap11(ActivityThread.java) 
                                                                     at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1344) 
                                                                     at android.os.Handler.dispatchMessage(Handler.java:102) 
                                                                     at android.os.Looper.loop(Looper.java:148) 
                                                                     at android.app.ActivityThread.main(ActivityThread.java:5417) 
                                                                     at java.lang.reflect.Method.invoke(Native Method) 
                                                                     at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:726) 
                                                                     at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:616) 
                                                                  Caused by: android.view.InflateException: Binary XML file line #1: Error inflating class fragment
                                                                     at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:782)
                                                                     at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:704)
                                                                     at android.view.LayoutInflater.inflate(LayoutInflater.java:492)
                                                                     at android.view.LayoutInflater.inflate(LayoutInflater.java:423) 
                                                                     at android.view.LayoutInflater.inflate(LayoutInflater.java:374) 
                                                                     at android.support.v7.app.AppCompatDelegateImplV7.setContentView(AppCompatDelegateImplV7.java:256) 
                                                                     at android.support.v7.app.AppCompatActivity.setContentView(AppCompatActivity.java:109) 
                                                                     at com.myapp.maptest.MapsActivity.onCreate(MapsActivity.java:35) 
                                                                     at android.app.Activity.performCreate(Activity.java:6237) 
                                                                     at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1107) 
                                                                     at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2369) 
                                                                     at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2476) 
                                                                     at android.app.ActivityThread.-wrap11(ActivityThread.java) 
                                                                     at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1344) 
                                                                     at android.os.Handler.dispatchMessage(Handler.java:102) 
                                                                     at android.os.Looper.loop(Looper.java:148) 
                                                                     at android.app.ActivityThread.main(ActivityThread.java:5417) 
                                                                     at java.lang.reflect.Method.invoke(Native Method) 
                                                                     at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:726) 
                                                                     at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:616) 
                                                                  Caused by: java.lang.NullPointerException: Attempt to invoke virtual method 'boolean java.io.File.mkdir()' on a null object reference
                                                                     at com.google.maps.api.android.lib6.gmm6.m.ad.a(Unknown Source)
                                                                     at com.google.maps.api.android.lib6.gmm6.c.h.a(Unknown Source)
                                                                     at com.google.maps.api.android.lib6.gmm6.c.ao.a(Unknown Source)
                                                                     at com.google.maps.api.android.lib6.e.bd.a(Unknown Source)
                                                                     at com.google.maps.api.android.lib6.e.ev.a(Unknown Source)
                                                                     at com.google.maps.api.android.lib6.e.z.a(Unknown Source)
                                                                     at com.google.maps.api.android.lib6.e.y.a(Unknown Source)
                                                                     at com.google.android.gms.maps.internal.u.onTransact(SourceFile:107)
                                                                     at android.os.Binder.transact(Binder.java:387)
                                                                     at com.google.android.gms.maps.internal.IMapFragmentDelegate$zza$zza.onCreateView(Unknown Source)
                                                                     at com.google.android.gms.maps.SupportMapFragment$zza.onCreateView(Unknown Source)
                                                                     at com.google.android.gms.dynamic.zza$4.zzb(Unknown Source)
                                                                     at com.google.android.gms.dynamic.zza.zza(Unknown Source)
                                                                     at com.google.android.gms.dynamic.zza.onCreateView(Unknown Source)
                                                                     at com.google.android.gms.maps.SupportMapFragment.onCreateView(Unknown Source)
                                                                     at android.support.v4.app.Fragment.performCreateView(Fragment.java:1962)
                                                                     at android.support.v4.app.FragmentManagerImpl.moveToState(FragmentManager.java:1036)
                                                                     at android.support.v4.app.FragmentManagerImpl.moveToState(FragmentManager.java:1226)
                                                                     at android.support.v4.app.FragmentManagerImpl.addFragment(FragmentManager.java:1328)
                                                                     at android.support.v4.app.FragmentManagerImpl.onCreateView(FragmentManager.java:2284)
                                                                     at android.support.v4.app.FragmentController.onCreateView(FragmentController.java:111)
                                                                     at android.support.v4.app.FragmentActivity.dispatchFragmentsOnCreateView(FragmentActivity.java:314)
                                                                     at android.support.v4.app.BaseFragmentActivityHoneycomb.onCreateView(BaseFragmentActivityHoneycomb.java:31)
                                                                     at android.support.v4.app.FragmentActivity.onCreateView(FragmentActivity.java:79)
                                                                    at android.view.LayoutInflater.createViewFr

问题是,在Android Studio的最后一晚更新之前,这已经完全正常(即使没有gms.version元数据)。起初我以为只是模拟器图像搞砸了,但是一旦MapActivity试图给片段充气,应用程序也会在我的手机上崩溃。调试在setContentView(R.layout.activity_maps)崩溃时说; 我再说一遍,这个确切的代码已经有效了

我试图将活动从AppCompatActivity更改为FragmentActivity,同样的错误。我试图将片段XML放入布局中,同样的错误。几乎我在网上找到的任何东西。同样的错误。

非常感谢任何帮助。

2 个答案:

答案 0 :(得分:0)

Sooo,根据这个链接:

code.google.com/Issue 9021

我的代码中没有错误。我也得到了

null pointer exception boolean java.io.File.mkdir()

这似乎是Googles地图/播放服务API或com.google.android.gms:play-services库中的错误。我想我必须等待修复。

答案 1 :(得分:0)