Java 如何将片段中的非默认构造函数更改为默认构造函数?
代码:Java 如何将片段中的非默认构造函数更改为默认构造函数?,java,android,Java,Android,代码: 您好,我想删除上面代码中的弃用警告,有没有办法将其更改为默认构造函数?去掉Bundle参数并使构造函数不带任何参数。然后使用setArguments()传递包。如有必要,创建静态工厂方法来创建带有必要参数的片段 创建片段时,请使用setArgument(): 并使用fragment的默认构造函数。设置参数后,可能需要调用setPlacePickerSettingsFromBundle(),如下所示: Bundle args = new Bundle(); // Construct you
您好,我想删除上面代码中的弃用警告,有没有办法将其更改为默认构造函数?去掉
Bundle
参数并使构造函数不带任何参数。然后使用setArguments()
传递包。如有必要,创建静态工厂方法来创建带有必要参数的片段 创建片段时,请使用setArgument():
并使用fragment的默认构造函数。设置参数后,可能需要调用setPlacePickerSettingsFromBundle()
,如下所示:
Bundle args = new Bundle();
// Construct your bundle here
Fragment mFragment = new PlacePickerFragment();
mFragment.setArguments(args);
mFragment.initialize();
Lawrence Choy的回答非常有用,但对我来说不起作用,因为super()调用不接受args变量。这对我很有用:
public PlacePickerFragment() {
super(GraphPlace.class, R.layout.com_facebook_placepickerfragment, args);
}
public void initialize() {
Bundle args = getArguments();
setPlacePickerSettingsFromBundle(args);
}
哪一行有弃用警告?根据java doc at,Fragment只有一个空构造函数。那么你的超级(GraphPlace.class,R.layout.com\u facebook\u placepickerfragment,args)来自哪里呢?避免在片段中使用非默认构造函数:使用默认构造函数加上片段设置参数(Bundle)而不是基线超级(GraphPlace.class,R.layout.com\u facebook\u placepickerfragment,args);从facebook sdk库,我可以确认facebook sdk 3.0中存在此问题。恼人的是,他们不能把这样的事情做好。现在是完全打开错误,因此会导致问题。我可以问一下您的构造函数的“args”是什么吗?@RRTW它是一个“Bundle”类型的对象引用
public PlacePickerFragment() {
super(GraphPlace.class, R.layout.com_facebook_placepickerfragment, args);
}
public void initialize() {
Bundle args = getArguments();
setPlacePickerSettingsFromBundle(args);
}
public void initialize() {
Bundle args = getArguments();
setPlacePickerSettingsFromBundle(args);
}
/**
* Default constructor. Creates a Fragment with all default properties.
*/
public PlacePickerFragment() {
super(GraphPlace.class, R.layout.com_facebook_placepickerfragment, null);
}