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),而不是使用非默认构造函数。它建议您按照我在示例中向您展示的操作,去掉您的构造函数