java.lang.RuntimeException: Unable to start activity ComponentInfo{com.doov.music/com.doov.music.activity.MainUIActivity}: android.app.Fragment$InstantiationException: Unable to instantiate fragment com.doov.music.online.search.SearchHWRFragment: make sure class name exists, is public, and has an empty constructor that is public
at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2534)
at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2608)
at android.app.ActivityThread.handleRelaunchActivity(ActivityThread.java:4216)
at android.app.ActivityThread.access$900(ActivityThread.java:178)
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1476)
at android.os.Handler.dispatchMessage(Handler.java:111)
at android.os.Looper.loop(Looper.java:194)
at android.app.ActivityThread.main(ActivityThread.java:5637)
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:959)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:754)
Caused by: android.app.Fragment$InstantiationException: Unable to instantiate fragment com.doov.music.online.search.SearchHWRFragment: make sure class name exists, is public, and has an empty constructor that is public
at android.app.Fragment.instantiate(Fragment.java:633)
at android.app.FragmentState.instantiate(Fragment.java:109)
at android.app.FragmentManagerImpl.restoreAllState(FragmentManager.java:1801)
at android.app.Fragment.performCreate(Fragment.java:2058)
at android.app.FragmentManagerImpl.moveToState(FragmentManager.java:868)
at android.app.FragmentManagerImpl.moveToState(FragmentManager.java:1072)
at android.app.FragmentManagerImpl.moveToState(FragmentManager.java:1054)
at android.app.FragmentManagerImpl.dispatchCreate(FragmentManager.java:1890)
at android.app.Activity.onCreate(Activity.java:947)
at com.doov.music.activity.BaseActivity.onCreate(BaseActivity.java:43)
at com.doov.music.activity.MainUIActivity.onCreate(MainUIActivity.java:226)
at android.app.Activity.performCreate(Activity.java:6092)
at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1112)
at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2481)
... 11 more
Caused by: java.lang.InstantiationException: class com.doov.music.online.search.SearchHWRFragment has no zero argument constructor
at java.lang.Class.newInstance(Class.java:1597)
at android.app.Fragment.instantiate(Fragment.java:622)
... 24 more
Caused by: java.lang.NoSuchMethodException: <init> []
at java.lang.Class.getConstructor(Class.java:531)
at java.lang.Class.getDeclaredConstructor(Class.java:510)
at java.lang.Class.newInstance(Class.java:1595)
... 25 more
解决方法:自定义的fragment最好有一个Public的参数为空的构造函数,若需要传入一个参数,可以使用下面的方法
public SearchHWRFragment() {
}
public static SearchHWRFragment getInstance(
OnItemClickListen onItemClickListen) {
SearchHWRFragment fileViewFragment = new SearchHWRFragment();
fileViewFragment.mOnItemClickListen = onItemClickListen;
return fileViewFragment;
}