Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/326.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
java新手-在创建片段时理解newInstance()_Java_Android - Fatal编程技术网

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

java新手-在创建片段时理解newInstance(),java,android,Java,Android,在创建一个新片段时,这个类的构造函数有一个newInstance,我不确定它是做什么的,也许你可以向我解释一下它在做什么 公共类详细信息片段扩展片段{ 私有int mIndex=0; 公共静态详细信息片段newInstance(int索引){ DetailsFragment df=新的DetailsFragment(); //提供索引输入作为参数。 Bundle args=新Bundle(); 参数putInt(“索引”,索引); 设置参数(args); 返回df; } 公共静态详细信息片段ne

在创建一个新片段时,这个类的构造函数有一个
newInstance
,我不确定它是做什么的,也许你可以向我解释一下它在做什么

公共类详细信息片段扩展片段{
私有int mIndex=0;
公共静态详细信息片段newInstance(int索引){
DetailsFragment df=新的DetailsFragment();
//提供索引输入作为参数。
Bundle args=新Bundle();
参数putInt(“索引”,索引);
设置参数(args);
返回df;
}
公共静态详细信息片段newInstance(捆绑包){
int index=bundle.getInt(“index”,0);
返回newInstance(索引);
}

根据我对Java的有限知识,我认为它正在创建这个类的一个新对象。但是如果是这样的话,为什么不直接编写DetailsFragment df=newdetailsFragment()总的来说,它似乎在做一些事情。

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


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

你的最后一段很重要,这是我们看到newInstance()的主要原因正在使用-我们想创建一个带有参数的实例,但是使用默认构造函数以外的任何东西都是不好的,因为Android系统将使用默认构造函数重新创建。这是一个好的观点,newInstance或构造函数应该只用于创建setArguments的捆绑包。但是我不明白为什么构造函数应该这样做你为什么要记下另一个答案?他只是重复了我已经说过的话。我向格伦尼斯道歉,因为他说的方式对我更有意义,并且回答了我的具体问题