2016-09-29 3 views
0

У меня есть карта фрагмент активностиСбой активности фрагмента карты, андроид?

Это файл макета

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

Код активности

public class MapsActivity extends FragmentActivity implements OnMapReadyCallback { 

private GoogleMap mMap; 

@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_maps); 
    // Obtain the SupportMapFragment and get notified when the map is ready to be used. 
    SupportMapFragment mapFragment = (SupportMapFragment) getSupportFragmentManager() 
      .findFragmentById(R.id.map); 
    mapFragment.getMapAsync(this); 
} 



@Override 
public void onMapReady(GoogleMap googleMap) { 
    mMap = googleMap; 

    // Add a marker in Sydney and move the camera 
    LatLng sydney = new LatLng(-34, 151); 
    mMap.addMarker(new MarkerOptions().position(sydney).title("Marker in Sydney")); 
    mMap.moveCamera(CameraUpdateFactory.newLatLng(sydney)); 
} 

}

Исключение составляет

java.lang.RuntimeException: Unable to start activity ComponentInfo{com.vfirst.godfather/com.vfirst.godfather.MapsActivity}: android.view.InflateException: Binary XML file line #1: Error inflating class fragment 
at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2325) 
at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2387) 
at android.app.ActivityThread.access$800(ActivityThread.java:151) 
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1303) 
at android.os.Handler.dispatchMessage(Handler.java:102) 
at android.os.Looper.loop(Looper.java:135) 
at android.app.ActivityThread.main(ActivityThread.java:5254) 
at java.lang.reflect.Method.invoke(Native Method) 
at java.lang.reflect.Method.invoke(Method.java:372) 
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:902) 
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:697) 
Caused by: android.view.InflateException: Binary XML file line #1: Error inflating class fragment 
at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:763) 
at android.view.LayoutInflater.inflate(LayoutInflater.java:482) 
at android.view.LayoutInflater.inflate(LayoutInflater.java:414) 
at android.view.LayoutInflater.inflate(LayoutInflater.java:365) 
at com.android.internal.policy.impl.PhoneWindow.setContentView(PhoneWindow.java:378) 
at android.app.Activity.setContentView(Activity.java:2154) 
at com.vfirst.godfather.MapsActivity.onCreate(MapsActivity.java:20) 
at android.app.Activity.performCreate(Activity.java:6033) 
at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1106) 
at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2278) 
at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2387)  
at android.app.ActivityThread.access$800(ActivityThread.java:151)  
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1303)  
at android.os.Handler.dispatchMessage(Handler.java:102)  
at android.os.Looper.loop(Looper.java:135)  
at android.app.ActivityThread.main(ActivityThread.java:5254)  
at java.lang.reflect.Method.invoke(Native Method)  
at java.lang.reflect.Method.invoke(Method.java:372)  
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:902)  
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:697)  
Caused by: java.lang.NullPointerException: Attempt to get length of null array 
at maps.G.a.a(Unknown Source) 
at maps.V.N.a(Unknown Source) 
at maps.D.e.a(Unknown Source) 
at maps.D.p.a(Unknown Source) 
at maps.ad.ae.a(Unknown Source) 
at maps.ad.t.a(Unknown Source) 
at maps.ad.M.a(Unknown Source) 
at ul.onTransact(:com.google.android.gms.DynamiteModulesB:107) 
at android.os.Binder.transact(Binder.java:380) 
at com.google.android.gms.maps.internal.IMapFragmentDelegate$zza$zza.onCreateView(Unknown Source) 
at com.google.android.gms.maps.MapFragment$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.MapFragment.onCreateView(Unknown Source) 
at android.app.Fragment.performCreateView(Fragment.java:2053) 
at android.app.FragmentManagerImpl.moveToState(FragmentManager.java:870) 
at android.app.FragmentManagerImpl.moveToState(FragmentManager.java:1045) 
at android.app.FragmentManagerImpl.addFragment(FragmentManager.java:1147) 
at android.app.FragmentManagerImpl.onCreateView(FragmentManager.java:2116) 
at android.app.Activity.onCreateView(Activity.java:5371) 
at android.support.v4.app.BaseFragmentActivityHoneycomb.onCreateView(BaseFragmentActivityHoneycomb.java:34) 
at android.support.v4.app.FragmentActivity.onCreateView(FragmentActivity.java:79) 
at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:733) 
at android.view.LayoutInflater.inflate(LayoutInflater.java:482)  
at android.view.LayoutInflater.inflate(LayoutInflater.java:414)  
at android.view.LayoutInflater.inflate(LayoutInflater.java:365)  
at com.android.internal.policy.impl.PhoneWindow.setContentView(PhoneWindow.java:378)  
at android.app.Activity.setContentView(Activity.java:2154)  
at com.vfirst.godfather.MapsActivity.onCreate(MapsActivity.java:20)  

Как это можно решить?

+0

Пожалуйста, добавьте ваш файл макета AndroidManifest.xml и все, а не только фрагмент. –

ответ

3

Изменить эти строки:

SupportMapFragment mapFragment = (SupportMapFragment) getSupportFragmentManager() 
     .findFragmentById(R.id.map); 
mapFragment.getMapAsync(this); 

для этого строки кода:

MapFragment map = ((MapFragment) getFragmentManager().findFragmentById(R.id.map)); 
    map.getMapAsync(this); 
2

Я думаю вместе с ответом W.Kurek, это может понадобиться:

Вы можете либо изменить ваш SupportMapFragment to MapFragment, как предложено W.Kurek ИЛИ, внесите изменения в свой XML-макет, как показано ниже, и продолжайте использовать тот же Ja va в вашей деятельности.

<fragment 
      android:id="@+id/map" 
      class="com.google.android.gms.maps.SupportMapFragment" 
      android:layout_width="match_parent" 
      android:layout_height="match_parent" /> 

Обратите внимание, что я использовал class="com.google.android.gms.maps.SupportMapFragment" вместо android:name="com.google.android.gms.maps.SupportMapFragment"

Разница между ними можно найти here

Смежные вопросы