2015-12-18 12 views
7

Sto usando fragmentActivity per maps.In classe Java ottenere errore su setContentView. Il mio Mapscreen.java è come: Funziona bene su alcuni dispositivi che mostrano solo crash su marshmallow. O c'è qualche altra ragione?Blocco in Marshmallow Fragment Activity per Maps

public class MapScreen extends FragmentActivity implements LocationListener, 
GoogleApiClient.ConnectionCallbacks, 
GoogleApiClient.OnConnectionFailedListener { 

    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.map_screen); 
    .... 

    SupportMapFragment fm = (SupportMapFragment) getSupportFragmentManager() 
      .findFragmentById(R.id.map); 
    googleMap = fm.getMap(); 
} 

    and my xml has fragment using SupportMapFragment as well. map_screen.xml is like : 


    <?xml version="1.0" encoding="utf-8"?> 
    <RelativeLayout 
     xmlns:android="http://schemas.android.com/apk/res/android" 
     android:layout_width="match_parent" 
     android:layout_height="match_parent" 
     android:orientation="vertical" > 

     <fragment 
      android:id="@+id/map" 
      android:name="com.google.android.gms.maps.SupportMapFragment" 
      android:layout_width="fill_parent" 
      android:layout_height="fill_parent" 
      android:layout_alignParentLeft="true" 
      android:layout_alignParentTop="true" /> 

     <ImageView 
      android:id="@+id/startActivityButton" 
      android:layout_width="wrap_content" 
      android:layout_height="wrap_content" 
      android:layout_alignParentBottom="true" 
      android:layout_centerHorizontal="true" 
      android:layout_marginLeft="50dp" 
      android:layout_marginRight="50dp" 
      android:layout_marginBottom="44dp" 
      android:background="@drawable/end_meetup_btn" 
     /> 

    </RelativeLayout> 

io non sono in grado di trovare la stessa domanda Arrivare incidente qui a Marshmallow: "riga del file XML Binary # 7: Errore di gonfiaggio frammento di classe" Si prega di suggerire! Tentativo di trovare "Causato da: java.lang.NullPointerException: tentativo di richiamare il metodo virtuale 'booleano java.io.File.mkdir()' su un riferimento oggetto nullo" anche.

12-18 13:40:14.425: E/AndroidRuntime(8026): FATAL EXCEPTION: main 
    12-18 13:40:14.425: E/AndroidRuntime(8026): Process: com.kindlebit.urban_exchange, PID: 8026 
    12-18 13:40:14.425: E/AndroidRuntime(8026): java.lang.RuntimeException: Unable to start activity ComponentInfo{com.kindlebit.urban_exchange/com.kindlebit.urban_exchange.MapScreen}: android.view.InflateException: Binary XML file line #7: Binary XML file line #7: Error inflating class fragment 
    12-18 13:40:14.425: E/AndroidRuntime(8026):  at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2416) 
    12-18 13:40:14.425: E/AndroidRuntime(8026):  at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2476) 
    12-18 13:40:14.425: E/AndroidRuntime(8026):  at android.app.ActivityThread.-wrap11(ActivityThread.java) 
    12-18 13:40:14.425: E/AndroidRuntime(8026):  at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1344) 
    12-18 13:40:14.425: E/AndroidRuntime(8026):  at android.os.Handler.dispatchMessage(Handler.java:102) 
    12-18 13:40:14.425: E/AndroidRuntime(8026):  at android.os.Looper.loop(Looper.java:148) 
    12-18 13:40:14.425: E/AndroidRuntime(8026):  at android.app.ActivityThread.main(ActivityThread.java:5417) 
    12-18 13:40:14.425: E/AndroidRuntime(8026):  at java.lang.reflect.Method.invoke(Native Method) 
    12-18 13:40:14.425: E/AndroidRuntime(8026):  at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:726) 
    12-18 13:40:14.425: E/AndroidRuntime(8026):  at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:616) 
    12-18 13:40:14.425: E/AndroidRuntime(8026): Caused by: android.view.InflateException: Binary XML file line #7: Binary XML file line #7: Error inflating class fragment 
    12-18 13:40:14.425: E/AndroidRuntime(8026):  at android.view.LayoutInflater.inflate(LayoutInflater.java:539) 
    12-18 13:40:14.425: E/AndroidRuntime(8026):  at android.view.LayoutInflater.inflate(LayoutInflater.java:423) 
    12-18 13:40:14.425: E/AndroidRuntime(8026):  at android.view.LayoutInflater.inflate(LayoutInflater.java:374) 
    12-18 13:40:14.425: E/AndroidRuntime(8026):  at com.android.internal.policy.PhoneWindow.setContentView(PhoneWindow.java:393) 
    12-18 13:40:14.425: E/AndroidRuntime(8026):  at android.app.Activity.setContentView(Activity.java:2166) 
    12-18 13:40:14.425: E/AndroidRuntime(8026):  at com.kindlebit.urban_exchange.MapScreen.onCreate(MapScreen.java:109) 
    12-18 13:40:14.425: E/AndroidRuntime(8026):  at android.app.Activity.performCreate(Activity.java:6237) 
    12-18 13:40:14.425: E/AndroidRuntime(8026):  at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1107) 
    12-18 13:40:14.425: E/AndroidRuntime(8026):  at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2369) 
    12-18 13:40:14.425: E/AndroidRuntime(8026):  ... 9 more 
    12-18 13:40:14.425: E/AndroidRuntime(8026): Caused by: android.view.InflateException: Binary XML file line #7: Error inflating class fragment 
    12-18 13:40:14.425: E/AndroidRuntime(8026):  at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:782) 
    12-18 13:40:14.425: E/AndroidRuntime(8026):  at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:704) 
    12-18 13:40:14.425: E/AndroidRuntime(8026):  at android.view.LayoutInflater.rInflate(LayoutInflater.java:835) 
    12-18 13:40:14.425: E/AndroidRuntime(8026):  at android.view.LayoutInflater.rInflateChildren(LayoutInflater.java:798) 
    12-18 13:40:14.425: E/AndroidRuntime(8026):  at android.view.LayoutInflater.inflate(LayoutInflater.java:515) 
    12-18 13:40:14.425: E/AndroidRuntime(8026):  ... 17 more 
    12-18 13:40:14.425: E/AndroidRuntime(8026): Caused by: java.lang.NullPointerException: Attempt to invoke virtual method 'boolean java.io.File.mkdir()' on a null object reference 
    12-18 13:40:14.425: E/AndroidRuntime(8026):  at com.google.maps.api.android.lib6.gmm6.m.ad.a(Unknown Source) 
    12-18 13:40:14.425: E/AndroidRuntime(8026):  at com.google.maps.api.android.lib6.gmm6.c.h.a(Unknown Source) 
    12-18 13:40:14.425: E/AndroidRuntime(8026):  at com.google.maps.api.android.lib6.gmm6.c.y.a(Unknown Source) 
    12-18 13:40:14.425: E/AndroidRuntime(8026):  at com.google.maps.api.android.lib6.e.bd.a(Unknown Source) 
    12-18 13:40:14.425: E/AndroidRuntime(8026):  at com.google.maps.api.android.lib6.e.ev.a(Unknown Source) 
    12-18 13:40:14.425: E/AndroidRuntime(8026):  at com.google.maps.api.android.lib6.e.z.a(Unknown Source) 
    12-18 13:40:14.425: E/AndroidRuntime(8026):  at com.google.maps.api.android.lib6.e.y.a(Unknown Source) 
    12-18 13:40:14.425: E/AndroidRuntime(8026):  at com.google.android.gms.maps.internal.u.onTransact(SourceFile:107) 
    12-18 13:40:14.425: E/AndroidRuntime(8026):  at android.os.Binder.transact(Binder.java:387) 
    12-18 13:40:14.425: E/AndroidRuntime(8026):  at com.google.android.gms.maps.internal.IMapFragmentDelegate$zza$zza.onCreateView(Unknown Source) 
    12-18 13:40:14.425: E/AndroidRuntime(8026):  at com.google.android.gms.maps.SupportMapFragment$zza.onCreateView(Unknown Source) 
    12-18 13:40:14.425: E/AndroidRuntime(8026):  at com.google.android.gms.dynamic.zza$4.zzb(Unknown Source) 
    12-18 13:40:14.425: E/AndroidRuntime(8026):  at com.google.android.gms.dynamic.zza.zza(Unknown Source) 
    12-18 13:40:14.425: E/AndroidRuntime(8026):  at com.google.android.gms.dynamic.zza.onCreateView(Unknown Source) 
    12-18 13:40:14.425: E/AndroidRuntime(8026):  at com.google.android.gms.maps.SupportMapFragment.onCreateView(Unknown Source) 
    12-18 13:40:14.425: E/AndroidRuntime(8026):  at android.support.v4.app.Fragment.performCreateView(Fragment.java:1962) 
    12-18 13:40:14.425: E/AndroidRuntime(8026):  at android.support.v4.app.FragmentManagerImpl.moveToState(FragmentManager.java:995) 
    12-18 13:40:14.425: E/AndroidRuntime(8026):  at android.support.v4.app.FragmentManagerImpl.moveToState(FragmentManager.java:1185) 
    12-18 13:40:14.425: E/AndroidRuntime(8026):  at android.support.v4.app.FragmentManagerImpl.addFragment(FragmentManager.java:1287) 
    12-18 13:40:14.425: E/AndroidRuntime(8026):  at android.support.v4.app.FragmentManagerImpl.onCreateView(FragmentManager.java:2243) 
    12-18 13:40:14.425: E/AndroidRuntime(8026):  at android.support.v4.app.FragmentController.onCreateView(FragmentController.java:111) 
    12-18 13:40:14.425: E/AndroidRuntime(8026):  at android.support.v4.app.FragmentActivity.dispatchFragmentsOnCreateView(FragmentActivity.java:278) 
    12-18 13:40:14.425: E/AndroidRuntime(8026):  at android.support.v4.app.BaseFragmentActivityHoneycomb.onCreateView(BaseFragmentActivityHoneycomb.java:31) 
+0

Cosa hai specificato nel tuo manifest ?? – Pankaj

+0

+0

risposta

4

Il numero era su "Micro-max Android one mobile" che era 6.0 Marshmallow. questo dispositivo non ha abbastanza spazio di memoria interno o esterno. Anche non ha scheda SD.

Dopo aver seguito la risposta di George da questo:

NullPointerException from Google maps

ho installato la scheda di memoria ed ora incidente non è venuta.

Quindi ho trovato il problema è stato aggiornato servizi di Google Play che richiedono spazio (foto di Google aggiornato) che non era abbastanza nel mio dispositivo.

e anche uno della linea Error mostrava "causato da: java.lang.NullPointerException: tentativo di richiamare il metodo 'boolean java.io.File.mkdir()' virtuale su un riferimento oggetto nullo"

Ho deciso di controllare dopo aver installato la scheda SD. E ha funzionato

+0

Che errore era! – Piyush

+0

sì hai ragione. Ho riscontrato lo stesso problema su micromax AQ4509 –

+0

Voglio rilevare questo errore e mostrare un messaggio all'utente finale per inserire la scheda SD. –

1
<!-- EXTERNAL_STORAGE permissions are optional for Android 6.0 onwards. --> 
    <uses-permission 
     android:name="android.permission.WRITE_EXTERNAL_STORAGE" 
     android:maxSdkVersion="22" /> 
    <uses-permission 
     android:name="android.permission.READ_EXTERNAL_STORAGE" 
     android:maxSdkVersion="22" /> 

Aggiungi questo al tuo manifest. Forse le mappe richiedono l'autorizzazione della sdcard per qualche altra cache in più o qualcosa del genere.

0

Questa è solo una soluzione che ho fatto. Se il controllo di sotto non riesce, invece di caricare la mappa, carico un frammento con un errore.

/** Checks if external storage is available for read and write */ 
public boolean isExternalStorageWritable() { 
    String state = Environment.getExternalStorageState(); 
    return Environment.MEDIA_MOUNTED.equals(state); 
} 
0

Aggiungere le autorizzazioni della scheda SD al file manifest.

<uses-permission 
    android:name="android.permission.WRITE_EXTERNAL_STORAGE" 
    /> 

    <uses-permission 
    android:name="android.permission.READ_EXTERNAL_STORAGE" 
    /> 
1

Il problema è stato risolto nella versione 9.0.83 della raccolta di Google Play Services.