I am using fragmentActivity for maps.In Java class getting error on setContentView. My Mapscreen.java is like: It is working fine on some devices showing crash on marshmallow only.Or is there any other reason?
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>
I am not able to find the same question Getting crash here in Marshmallow: "Binary XML file line #7: Error inflating class fragment" Please suggest! Tried to find "Caused by: java.lang.NullPointerException: Attempt to invoke virtual method 'boolean java.io.File.mkdir()' on a null object reference" also.
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)
The Issue was on "Micro-max Android one mobile" which was 6.0 Marshmallow. this device has not enough internal or external memory space.Even does not have SD card.
After following answer of George from this :
NullPointerException from Google maps
i installed memory card and now crash is not coming.
So i found problem was Updated Google Play services which require Space (updated Google photos ) that was not enough in my device.
and also one of the Error line was showing "Caused by: java.lang.NullPointerException: Attempt to invoke virtual method 'boolean java.io.File.mkdir()' on a null object reference"
i decided to check after installing SD-card. And it worked
<!-- 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" />
Add this to your manifest. Maybe maps need sdcard permission for some extra caching or something.
The issue has been fixed in version 9.0.83 of Google Play Services library.
This is just a workaround I did. If the below check fails, instead of loading the map, I load a fragment with an error.
/** Checks if external storage is available for read and write */
public boolean isExternalStorageWritable() {
String state = Environment.getExternalStorageState();
return Environment.MEDIA_MOUNTED.equals(state);
}
Add SD card permissions to your manifest file.
<uses-permission
android:name="android.permission.WRITE_EXTERNAL_STORAGE"
/>
<uses-permission
android:name="android.permission.READ_EXTERNAL_STORAGE"
/>
来源:https://stackoverflow.com/questions/34351392/crash-in-marshmallow-fragment-activity-for-maps