确保类名存在,是公共的,并且具有带有类名和空构造函数的公共片段的空构造函数

时间:2015-02-22 18:38:39

标签: java android android-fragments runtimeexception

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

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

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

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

public class WizardFirstPage extends Fragment

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

我错过了什么?

1 个答案:

答案 0 :(得分:9)

public class WizardFirstPage extends Fragment

这是packageName.Wizard的内部类。只有当类被声明为static时才会起作用,如Blackbelt所示:

public static class WizardFirstPage extends Fragment

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