Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/314.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 如何将片段中的非默认构造函数更改为默认构造函数?_Java_Android - Fatal编程技术网

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);
}