2016-05-18 2 views
1

Я пишу приложение для Android, которое включает фрагмент карты Google. Когда я исключаю фрагмент карты из активности, в которой он содержится, приложение работает нормально. Когда я включаю фрагмент карты, я получаю исключение, указанное в приведенном ниже блоке. Самая раздражающая часть об этом заключается в том, что всего несколько недель назад этого не произошло. Эта деятельность прошла отлично отлично в течение нескольких недель, а затем я обновил андроид-студию, и теперь я получаю это исключение. Я искал google и несколько потоков в stackoverflow для решений, ничего не работает. Я даже попробовал прямое копирование и вставку демо-версии Google для Android, и я получаю то же исключение. ПОЖАЛУЙСТА ПОМОГИ.Android Studio: ошибка раздувания фрагмента класса

Исключение подняли (скопировано с андроид монитора):

неустранимые: Основной процесс: com.androidapps.seanmcalinden.firstandroidapp, ПИД: 23089 java.lang.RuntimeException: Невозможно запустить активность ComponentInfo {com.androidapps.seanmcalinden.firstandroidapp/com.androidapps.seanmcalinden.firstandroidapp.MapsActivity}: android.view.InflateException: двоичная строка XML-файла # 55: двоичная строка XML-файла # 55: ошибка раздувания фрагмента класса на android.app. ActivityThread.performLaunchActivity (ActivityThread.java:2416) на android.app.ActivityThread.handleLaunchActivity (ActivityThread.java:2476) на android.app.ActivityThread.-wrap11 (ActivityThread.java) на android.app.ActivityThread $ H.handleMessage (ActivityThread.java:1344) на android.os.Handler.dispatchMessage (Handler.java:102) на android.os.Looper.loop (Looper.java:148) на android.app.ActivityThread.main (ActivityThread.java:5417) на java .lang.reflect.Method.invoke (собственный метод) at com.android.internal.os.ZygoteInit $ MethodAndArgsCaller.run (ZygoteInit.java:726) at com.an droid.internal.os.ZygoteInit.main (ZygoteInit.java:616) Вызвано: android.view.InflateException: двоичная строка XML-файла # 55: двоичная строка XML-файла # 55: ошибка раздувания фрагмента класса на android.view. LayoutInflater.inflate (LayoutInflater.java:539) на android.view.LayoutInflater.inflate (LayoutInflater.java:423) на android.view.LayoutInflater.inflate (LayoutInflater.java:374) на com.android.internal. policy.PhoneWindow.setContentView (PhoneWindow.java:393) на android.app.Activity.setContentView (Activity.java:2166) на com.androidapps.seanmcalinden.firstandroidapp.MapsActivity.onCreate (MapsActivity.java:67) на android.app.Activity.performCreate (Activity.java:6237) на android.app.Instrumentation.callActivityOnCreate (Instrumentation.java:1107) на 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) на android.os.Looper.loop (Looper.java:148) на android.app.ActivityThread.main (ActivityThread.java:5417) по адресу 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) Вызвано : android.view.InflateException: двоичная строка XML-файла # 55: ошибка раздувания фрагмента класса на android.view.LayoutInflater.createViewFromTag (LayoutInflater.java:782) на android.view.LayoutInflater.createViewFromTag (LayoutInflater.java:704) на android.view.LayoutInflater.rInflate (LayoutInflater.java:835) на android.view.LayoutInflater.rInflateChildren (LayoutInflater.java:798) на android.view.LayoutInflater.inflate (LayoutInflater.java:515) на android.view.LayoutInflater.inflate (LayoutInflater.java:423) на android.view.LayoutInflater.inflate (LayoutInflater.java:374) at com .android.internal.policy.PhoneWindow.setContentView (PhoneWindow.java:393) на android.app.Activity.setContentView (Activity.java:2166) на com.androidapps.seanmcalinden.firstandroidapp.MapsActivity.onCreate (MapsActivity.java : 67) at android.app.Activity.performCreate (Activity.java:6237) at android.app.Instrumentation.callActivityOnCreate (Instrumentation.java:1107) в android.app.ActivityThread.performLaunchActivity (ActivityThread.java:2369) в android.app.ActivityThread.handleLaunchActivity (ActivityThread.java:2476) в android.app.ActivityThread.-wrap11 (ActivityThread.java) на андроид .app.ActivityThread $ H.handleMessage (ActivityThread.java:1344) на android.os.Handler.dispatchMessage (Handler.java:102) на android.os.Looper.loop (Looper.java:148) на android .app.ActivityThread.main (ActivityThread.java:5417) по адресу java.lang.reflect.Method.invoke (собственный метод) at com.android.internal.os.ZygoteInit $ MethodAndArgsCaller.run (ZygoteInit.java:726) at com.android.internal.os.ZygoteInit.main (ZygoteInit.java:616) Вызвано: java.lang.NullPointerException : Попытка вызвать виртуальный метод «boolean java.io.File.mkdir()» в ссылке нулевого объекта на com.google.maps.api.android.lib6.gmm6.m.ad.a (Неизвестный источник) at com.google.maps.api.android.lib6.gmm6.cha (Неизвестный источник) at com.google.maps.api.android.lib6.gmm6.cya (Неизвестный источник) at com.google.maps.api. android.lib6.e.bd.a (Неизвестный источник) at com.google.maps.api.android.lib6.e.ev.a (Неизвестный Sou rce) на com.google.maps.api.android.lib6.eza (Неизвестный источник) на com.google.maps.api.android.lib6.eya (Неизвестный источник) на 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 (Неизвестный источник) на com.google.android.gms.maps.MapFragment $ zza.onCreateView (неизвестный источник) на com.google.android.gms.dynamic.zza $ 4.zzb (Неизвестный источник) на com.google. android.gms.dynamic.zza.zza (Неизвестный источник) на com.google.android.gms.dynamic.zza.onCreateView (неизвестный источник) на com.google.android.gms.maps.MapFragment.onCreateView (Неизвестный источник) на android.app.Fragment .performCreateView (Fragment.java:2220) на android.app.FragmentManagerImpl.moveToState (FragmentManager.java:949) на android.app.FragmentManagerImpl.moveToState (FragmentManager.java:1126) в android.app.FragmentManagerImpl.addFragment (FragmentManager.java:1228) на android.app.FragmentManagerImpl.onCreateView (FragmentManager.java:2201) на android.app.FragmentCont roller.onCreateView (FragmentController.java:98) на android.app.Activity.onCreateView (Activity.java:5546) на android.support.v4.app.BaseFragmentActivityHoneycomb.onCreateView (BaseFragmentActivityHoneycomb.java:34) на андроид. support.v4.app.FragmentActivity.onCreat

OnCreate метод:

protected void onCreate(Bundle savedInstanceState) { 
    Log.e("success", "entered onCreate in MapsActivity"); 

    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_maps); 

    // Obtain the SupportMapFragment and get notified when the map is ready to be used. 
    MapFragment mapFragment = 
      (MapFragment) getFragmentManager().findFragmentById(R.id.map); 
    mapFragment.getMapAsync(this); 

    if (locationGAC == null) { 
     // ATTENTION: This "addApi(AppIndex.API)"was auto-generated to implement the App Indexing API. 
     // See https://g.co/AppIndexing/AndroidStudio for more information. 
     locationGAC = new GoogleApiClient.Builder(this) 
       .addConnectionCallbacks(this) 
       .addOnConnectionFailedListener(this) 
       .addApi(LocationServices.API) 
       .addApi(AppIndex.API).build(); 
     Log.e("success", "created locationGAC"); 
    } 

    Log.d("myTag", "test output 1"); 

    createFriendList(); 

} 

файл макета для этой деятельности:

<?xml version="1.0" encoding="utf-8"?> 
<RelativeLayout xmlns:tools="http://schemas.android.com/tools" 
android:layout_width="fill_parent" 
android:layout_height="fill_parent" 
xmlns:android="http://schemas.android.com/apk/res/android" 
android:orientation="vertical" 
android:background="@color/colorPrimary" 
android:weightSum="1" > 

<RelativeLayout 
    android:layout_width="fill_parent" 
    android:layout_height="wrap_content" 
    xmlns:android="http://schemas.android.com/apk/res/android" 
    android:orientation="horizontal" > 

    <Button 
     android:layout_width="70dp" 
     android:layout_height="60dp" 
     android:text="Back" 
     android:id="@+id/button" 
     android:layout_alignParentStart="true" 
     android:layout_alignParentTop="true" 
     android:layout_alignBottom="@+id/SearchBar1" 
     android:onClick="backToLogin" 
     android:background="@color/colorPrimaryDark" 
     android:textColor="#ffffff" /> 

    <EditText 
     android:layout_width="0dp" 
     android:layout_height="60dp" 
     android:id="@+id/SearchBar1" 
     android:layout_alignParentTop="true" 
     android:hint="Search" 
     android:layout_alignParentEnd="false" 
     android:layout_alignParentStart="false" 
     android:layout_toEndOf="@id/button" 
     android:layout_toStartOf="@+id/SearchButton" 
     android:textColor="#ffffff" 
     android:textColorHint="#ffffff" /> 

    <Button 
     style="?android:attr/buttonStyleSmall" 
     android:layout_width="70dp" 
     android:layout_height="60dp" 
     android:text="Go" 
     android:id="@+id/SearchButton" 
     android:layout_alignParentRight="true" 
     android:enabled="true" 
     android:onClick="onSearch" 
     android:textColor="#ffffff" 
     android:background="@color/colorPrimaryDark" /> 

</RelativeLayout> 

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


<RelativeLayout 
    android:layout_width="fill_parent" 
    android:layout_height="60dp" 
    xmlns:android="http://schemas.android.com/apk/res/android" 
    android:layout_alignParentBottom="true" 
    android:orientation="horizontal"> 

    <Button 
     android:layout_width="70dp" 
     android:layout_height="60dp" 
     android:text="Retrieve" 
     android:id="@+id/serverRetrieveButton" 
     android:layout_gravity="left" 
     android:textColor="#ffffff" 
     android:onClick="getLocationFromDexelus" 
     android:background="@color/colorPrimaryDark" /> 

    <Button 
     android:layout_width="70dp" 
     android:layout_height="60dp" 
     android:text="Send" 
     android:id="@+id/serverSendButton" 
     android:layout_alignParentRight="true" 
     android:textColor="#ffffff" 
     android:onClick="sendLocationToDexelus" 
     android:background="@color/colorPrimaryDark" /> 

</RelativeLayout> 

</RelativeLayout> 

Как было сказано выше, я пробовал много решений, найденных здесь, в Stackoverflow. Не сказать, что вы не должны публиковать их снова, а скорее, что я думаю, что моя проблема может быть более сложной или конкретной, чем те, потому что ни один из данных решений не работал для меня.

Спасибо.

+0

Предоставьте сообщения, которые вы уже проверили, чтобы другие не пытались его дублировать. Вы упомянули, что это произошло после обновления AS, какова текущая версия ваших сервисов google-play? Можно ли разместить свой град? –

+0

Проверьте код в этом вопросе SO [17469661] (http://stackoverflow.com/questions/17469661/google-mapfragment-not-working-in-android) и [15703245] (http://stackoverflow.com/questions/15703245/google-maps-fragment-doesnt-load), если это может вам помочь. Попробуйте использовать SupportMapFragment вместо MapFragment. – KENdi

ответ

1

По какой-то причине, когда я обновил свой sdk до версии, выпущенной в среду, мои проблемы исчезли. Я думаю, это уместно, так как проблемы появились впервые после обновления студии Android. Спасибо за ваши предложения!

0

Я думаю, что ошибка исходит из строки class="com.google.android.gms.maps.MapFragment" Возможно, путь неправильный.