在创建一个新片段时,这个类的构造函数有这个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的有限知识,我认为它正在创建这个类的一个新对象。但如果是这样的话,为什么不直接在main中编写detailsFragment df=new detailsFragment()?好像是在做什么。

最佳答案

newInstance函数是一个在android中常用的方便函数。函数的目的是确保在创建片段时始终调用setArguments,因为片段需要这些参数。你说得对,你不必这样做。这只是一种习惯模式。
你不能仅仅创建一个带参数的构造函数,因为android需要能够实例化那些片段,并且它不能提供那些参数。

10-06 07:15
查看更多