在我旋转屏幕之前,我以为我已经完成了对片段的转换。我收到以下类型的错误:
RuntimeException:无法启动活动ComponentInfo {com.ghcssoftware.gedstar / com.ghcssoftware.gedstar.GedStar}:android.support.v4.app.Fragment $ InstantiationException:无法实例化片段com.ghcssoftware.gedstar.PersonTab $ PersonTabFrag:确保类名存在,是公共的,并且具有公共
的空构造函数有问题的类确实存在,是公共的,我添加了一个空构造函数,结果没有变化。看一些示例代码,我注意到与编写代码的方式有些不同,尽管我也看不到空构造函数:
1)是否有任何理由要宣布我的片段类"静态"有多少样品?
2)我是否需要实施" newInstance"在我的片段类中?为什么这样做而不是只有一个构造函数?例如,来自V14样本之一:
public static class CountingFragment extends Fragment {
int mNum;
/**
* Create a new instance of CountingFragment, providing "num"
* as an argument.
*/
static CountingFragment newInstance(int num) {
CountingFragment f = new CountingFragment();
// Supply num input as an argument.
Bundle args = new Bundle();
args.putInt("num", num);
f.setArguments(args);
return f;
}
我对某些Java概念仍然有点不熟悉,所以可能会遗漏一些基本的东西。
道格戈登 GHCS软件答案 0 :(得分:4)
是否有任何理由要宣布我的片段类"静态"有多少样品?
只有它是内在的某种东西。由于您的内容似乎是PersonTab
的内部类,因此它需要是静态的。或者,将其移出PersonTab
以外的独立Java类。
我是否需要实施" newInstance"在我的片段类中?为什么这样做而不只是有一个构造函数?
这只是一种工厂方法。框架不要求它。
答案 1 :(得分:0)
2)。 传递一个变量throw newInstance函数参数,在你的情况下它是num,允许排除需要在constractor和onCreateView之间带来值的类私有变量。对于int变量,它什么都没有,但是对于长串... 问候, 尤里