确保 class 名称存在,是 public,并且具有 public 片段的空构造函数和 class 名称和空构造函数

make sure class name exists, is public, and has an empty constructor for public fragment with class name and empty constructor

我刚刚从一位用户那里收到了一份崩溃报告,其中包含以下错误跟踪:

Unable to instantiate fragment packageName.Wizard$WizardFirstPage: make sure class name exists, is public, and has an empty constructor that is public   

这是 类 声明:

public class Wizard extends Other

public abstract class Other extends BaseActivity

public abstract class BaseActivity extends ActionBarActivity

所有 类 都是 public,已命名且没有用户定义的构造函数。

至于片段WizardFirstPage:(在Wizard中定义)

public class WizardFirstPage extends Fragment

也没有用户定义的构造函数。

我错过了什么?

public class WizardFirstPage extends Fragment

那是 packageName.Wizard 的内层 class。仅当 class 声明为 static 时才有效,如 Blackbelt 所示:

public static class WizardFirstPage extends Fragment

Wizard activity 进行配置更改,或在进程终止后重新创建时,Android 将尝试创建 Wizard$WizardFirstPage 的实例.使用您当前的方法,Android 无法执行此操作,因为只有 Wizard 的实例才能创建 Wizard$WizardFirstPage 的实例。将 WizardFirstPage 更改为 static 将解决此问题。