Fragment - InstantiationException: no empty Constructor -> Google Maps v2?
android, constructor, fragment, instantiationexception
Solution
But these FragmentContact is a public class in a *.java-file and has a public empty constructor.
The error is not complaining about `FragmentContact`. It is complaining about the first inner class of `FragmentContact` (`FragmentContact$1`). You cannot have a `Fragment` implemented as an inner class of anything, as it cannot be instantiated from outside the outer class. A `static` inner class is fine.
Problem
I get this error message, when I open a closed App again via App-Change button: ``` Caused by: java.lang.InstantiationException: can't instantiate class com.*.FragmentContact$1; no empty constructor ``` I've found several tips about Inner-Classes and to make them static etc. But this FragmentContact is a public class in a *.java-file and has a public empty constructor. I'm using Google Maps Api v2 in this project and do a trick somewhere from the internet to setup my MapView. Look here: ``` @Override public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { View v = inflater.inflate(R.layout.fragment_contact, null); try { MapsInitializer.initialize(this.getActivity().getApplicationContext()); } catch (GooglePlayServicesNotAvailableException e) { e.printStackTrace(); } fragment = new SupportMapFragment() { @Override public void onActivityCreated(Bundle savedInstanceState) { super.onActivityCreated(savedInstanceState); mMap = fragment.getMap(); if (mMap != null) { setupMap(); } } }; getFragmentManager().beginTransaction().replace(R.id.fragment_orte_map_parent, fragment).commit(); return v; } ``` When I cut this MapView-thing out everything work fine. Maybe someone can explain what I'm doing wrong. My complete Stacktrace: ``` FATAL EXCEPTION: main java.lang.RuntimeException: Unable to start activity ComponentInfo{com.*/com.*.MainActivity}: android.support.v4.app.Fragment$InstantiationException: Unable to instantiate fragment com.*.FragmentContact$1: make sure class name exists, is public, and has an empty constructor that is public at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2307) at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2357) at android.app.ActivityThread.access$600(ActivityThread.java:153) at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1247) at android.os.Handler.dispatchMessage(Handler.java:99) at android.os.Looper.loop(Looper.java:137) at android.app.ActivityThread.main(ActivityThread.java:5226) at java.lang.reflect.Method.invokeNative(Native Method) at java.lang.reflect.Method.invoke(Method.java:511) at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:795) at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:562) at dalvik.system.NativeStart.main(Native Method) Caused by: android.support.v4.app.Fragment$InstantiationException: Unable to instantiate fragment com.*.FragmentContact$1: make sure class name exists, is public, and has an empty constructor that is public at android.support.v4.app.Fragment.instantiate(Fragment.java:405) at android.support.v4.app.FragmentState.instantiate(Fragment.java:97) at android.support.v4.app.FragmentManagerImpl.restoreAllState(FragmentManager.java:1767) at android.support.v4.app.FragmentActivity.onCreate(FragmentActivity.java:208) at com.*.MainActivity.onCreate(MainActivity.java:20) at android.app.Activity.performCreate(Activity.java:5104) at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1080) at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2261) ... 11 more Caused by: java.lang.InstantiationException: can't instantiate class com.*.FragmentContact$1; no empty constructor at java.lang.Class.newInstanceImpl(Native Method) at java.lang.Class.newInstance(Class.java:1319) at android.support.v4.app.Fragment.instantiate(Fragment.java:394) ... 18 more ```