确保 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
将解决此问题。
我刚刚从一位用户那里收到了一份崩溃报告,其中包含以下错误跟踪:
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
将解决此问题。