我对有关默认构造函数的错误消息感到困惑。
我有两个类MainActivity
和ResultDialog
。MainActivity
中的一些方法创建一个新的对话框,并将2字符串传递给ResultDialog
中的自定义构造函数。
ResultDialog
扩展了DialogFragment
。因此,我定义了自己的构造函数,但当出现错误时,我只创建了一个no参数构造函数,但这仍然是不允许的。
我已经搜索过abit了,但是答案可以解释一下,屏幕旋转可能会破坏和重新创建屏幕,使用默认的构造函数,但仍然没有回答我如何解决这个问题。
错误是避免片段中的非默认构造函数:使用默认构造函数加Fragment#setArguments(束)代替。
谁来帮帮我,我有点糊涂了。我的ResultDialog
课程的一部分:
public class ResultDialog extends DialogFragment {
private String message;//to hold the message to be displayed
private String title;//for alert dialog title
//constructor for the dialog passing along message to be displayed in the alert dialog
public ResultDialog(String message,String title){
this.message = message;
this.title = title;
}
public ResultDialog(){
//default constructor
}
发布于 2013-10-05 10:43:28
您可以使用newInstance
。查一下文件
http://developer.android.com/reference/android/app/Fragment.html
也要检查这个
ResultDialog rd = ResultDialog.newInstance("message","title");
然后
public static ResultDialog newInstance(String message,String title) {
ResultDialog f = new ResultDialog();
Bundle args = new Bundle();
args.putString("message", message);
args.putString("title", title);
f.setArguments(args);
return f;
}
并使用getArguments()
检索值。
String message = getArguments().getString("message");
String title = getArguments().getString("title");
getArguments()
public final Bundle getArguments ()
Added in API level 11
Return the arguments supplied when the fragment was instantiated, if any.
发布于 2013-10-05 10:34:39
同样的作品用于对话。链接您不能声明自己的构造函数。只需生成对话框的新实例并按参数传递字符串即可。在您的onCreate中,只需使用getArguments().getString("key")获取它们
希望这对你有帮助
发布于 2013-10-05 10:35:36
建议您不要定义单独的构造函数,而是只使用无参数的构造函数,并使用setArguments(Bundle)
方法将数据传递到Fragment
。根据文档
所有片段的子类都必须包含一个公共的空构造函数。当需要时,框架通常会重新实例化一个片段类,特别是在状态恢复期间,并且需要能够找到这个构造函数来实例化它。如果空构造函数不可用,在某些情况下,在状态恢复期间会出现运行时异常。
一旦使用了setArguments(Bundle)
,就可以从Fragment
内部调用getArguments()
来检索数据。
https://stackoverflow.com/questions/19196704
复制相似问题