在创建一个新片段时,这个类的构造函数有这个newInstance
,我不确定它是做什么的,也许你可以向我解释它在做什么?
public class DetailsFragment extends Fragment {
private int mIndex = 0;
public static DetailsFragment newInstance(int index) {
DetailsFragment df = new DetailsFragment();
// Supply index input as an argument.
Bundle args = new Bundle();
args.putInt("index", index);
df.setArguments(args);
return df;
}
public static DetailsFragment newInstance(Bundle bundle) {
int index = bundle.getInt("index", 0);
return newInstance(index);
}
从我对Java的有限知识,我认为它正在创建这个类的新对象..但如果是这样的话,那么为什么不在主函数中编写DetailsFragment df = new DetailsFragment()?好像它正在做某事。
答案 0 :(得分:3)
newInstance
功能是一种便捷功能,通常在Android中使用。该函数的要点是确保在创建片段时始终调用setArguments
,因为片段需要这些参数。你是不是必需以这种方式做事。这只是一种习惯模式。
你不能只创建一个带参数的构造函数,因为Android需要能够实例化那些片段,而且它们无法提供这些参数。