我刚刚从一位用户那里收到了一份崩溃报告,其中包含以下错误跟踪:
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)抽象类 Other extends BaseActivity
公共(public)抽象类 BaseActivity 扩展了 ActionBarActivity
所有类都是公开的、命名的并且没有用户定义的构造函数。
至于 fragment WizardFirstPage
:(在 Wizard
中定义)
公共(public)类 WizardFirstPage extends Fragment
也没有用户定义的构造函数。
我错过了什么?
最佳答案
public class WizardFirstPage extends Fragment
那是packageName.Wizard
的一个内部类。仅当类声明为 static
时才有效,如 Blackbelt 所示:
public static class WizardFirstPage extends Fragment
当 Wizard
Activity 发生配置更改,或在进程终止后重新创建时,Android 将尝试创建 Wizard$WizardFirstPage
的实例。使用您当前的方法,Android 无法执行此操作,因为只有 Wizard
的实例才能创建 Wizard$WizardFirstPage
的实例。将 WizardFirstPage
更改为 static
将解决此问题。
关于java - 确保类名存在,是公共(public)的,并且具有类名和空构造函数的公共(public) fragment 的空构造函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28661690/