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

Sag*_*Low 5 java android runtimeexception android-fragments

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

Unable to instantiate fragment packageName.Wizard$WizardFirstPage: make sure class name exists, is public, and has an empty constructor that is public   
Run Code Online (Sandbox Code Playgroud)

这是类声明:

public class Wizard extends Other

public abstract class Other extends BaseActivity

public abstract class BaseActivity extends ActionBarActivity

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

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

public class WizardFirstPage extends Fragment

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

我错过了什么?

Com*_*are 9

public class WizardFirstPage extends Fragment
Run Code Online (Sandbox Code Playgroud)

那是一个内在的阶级packageName.Wizard.只有在声明类时,这才会起作用static,如Blackbelt所示:

public static class WizardFirstPage extends Fragment
Run Code Online (Sandbox Code Playgroud)

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