java的新手 - 在创建片段时理解newInstance()

时间:2014-01-01 15:46:08

标签: java android

在创建一个新片段时,这个类的构造函数有这个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()?好像它正在做某事。

1 个答案:

答案 0 :(得分:3)

newInstance功能是一种便捷功能,通常在Android中使用。该函数的要点是确保在创建片段时始终调用setArguments,因为片段需要这些参数。你是不是必需以这种方式做事。这只是一种习惯模式。

你不能只创建一个带参数的构造函数,因为Android需要能够实例化那些片段,而且它们无法提供这些参数。