Android 类扩展片段-错误表示确保类名存在,是公共的,并且有一个公共的空构造函数

Android 类扩展片段-错误表示确保类名存在,是公共的,并且有一个公共的空构造函数,android,android-fragments,fragment,Android,Android Fragments,Fragment,我有一门课是这样的: class TopicFragment extends Fragment{ public TopicFragment(VO vO) { // some code } } 用户报告应用程序正在崩溃,日志显示: android.support.v4.app.Fragment$InstantiationException: Unable to instantiate fragment com.aaa.wert.TopicFragment: make su

我有一门课是这样的:

class TopicFragment extends Fragment{

public TopicFragment(VO vO) { 
    // some code
    }

}
用户报告应用程序正在崩溃,日志显示:

 android.support.v4.app.Fragment$InstantiationException: Unable to instantiate fragment com.aaa.wert.TopicFragment: make sure class name exists, is public, and has an empty constructor that is public
我已经研究了这个链接,但我无法解决这个问题


请帮我解决这个问题。

只需添加一个不带公共参数的空构造函数即可。如果在XML中设置了片段,但没有空构造函数,则无法创建该片段

public TopicFragment() {
}
我通常也只有空构造函数,并且有这样一个方法来实例化参数

public static TopicFragment newInstance(VO vo) {
    TopicFragment fragment = new TopicFragment();
    fragment.setVo(vo);
    return fragment;
}
编辑:正如大家在评论中所说的,让你们的班级:

public class TopicFragment {
}

只需添加一个没有参数的空构造函数,它是公共的。如果在XML中设置了片段,但没有空构造函数,则无法创建该片段

public TopicFragment() {
}
我通常也只有空构造函数,并且有这样一个方法来实例化参数

public static TopicFragment newInstance(VO vo) {
    TopicFragment fragment = new TopicFragment();
    fragment.setVo(vo);
    return fragment;
}
编辑:正如大家在评论中所说的,让你们的班级:

public class TopicFragment {
}

您还应该发布实例化此片段的代码。还有,为什么TopicFragment本身不是公共的呢?首先,更改您的片段构造函数,并使其也为空,不带任何参数。然后将TopicFragment设置为public。然后,请发布您的完整代码。您也应该发布实例化此片段的代码。还有,为什么TopicFragment本身不是公共的呢?首先,更改您的片段构造函数,并使其也为空,不带任何参数。然后将TopicFragment设置为public。那么,请发布您的完整代码。那么我是否需要将上述两个添加到我的类中?您需要添加第一个,如果您愿意,可以使用第二个来代替您的。我添加了默认构造函数,它说在片段中避免非默认构造函数:使用默认构造函数加上片段#setArguments(Bundle),而不是使用非默认构造函数。这是建议你做我在我的示例中向你展示的事情,去掉你的构造函数。文档中说明你应该使用setArguments(Bundle),那么我需要将以上两个都添加到我的类中吗?你需要添加第一个,如果你愿意,可以使用第二个,而不是你的。我添加了默认构造函数,它说在片段中避免非默认构造函数:使用默认构造函数加上片段#setArguments(Bundle),而不是使用非默认构造函数。它建议您按照我在示例中向您展示的操作,去掉您的构造函数