Java 无法从扩展DialogFragment的类创建默认构造函数,我已经创建了自己的自定义构造函数

Java 无法从扩展DialogFragment的类创建默认构造函数,我已经创建了自己的自定义构造函数,java,android,android-dialogfragment,Java,Android,Android Dialogfragment,关于默认构造函数的错误消息,我有点困惑 我有2个类MainActivity和ResultDialog。MainActivity中的某些方法创建一个新对话框,并将2个字符串传递给ResultDialog中的自定义构造函数 ResultDialog扩展了DialogFragment。所以我定义了自己的构造函数,但当出现错误时,我只是创建了一个无参数构造函数,但这仍然是不允许的 我已经搜索过了,但答案有点解释说屏幕旋转可能会破坏和重新创建屏幕,使用默认构造函数,但仍然没有回答我如何解决这个问题 错误是

关于默认构造函数的错误消息,我有点困惑

我有2个类
MainActivity
ResultDialog
MainActivity
中的某些方法创建一个新对话框,并将2个字符串传递给
ResultDialog
中的自定义构造函数

ResultDialog
扩展了
DialogFragment
。所以我定义了自己的构造函数,但当出现错误时,我只是创建了一个无参数构造函数,但这仍然是不允许的

我已经搜索过了,但答案有点解释说屏幕旋转可能会破坏和重新创建屏幕,使用默认构造函数,但仍然没有回答我如何解决这个问题

错误是避免片段中的非默认构造函数:使用默认值 构造函数加上片段#setArguments(Bundle)

有人请帮我,我有点困惑。我的
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
}
对话框也是如此。 您不能声明自己的构造函数。只需生成对话框的新实例并通过参数传递字符串。在onCreate中,只需使用getArguments().getString(“键”)对它们进行fetcjph


希望这能帮助您

而不是定义单独的构造函数,建议您只使用无参数构造函数,并使用
setArguments(Bundle)
方法将数据传递到
片段
。根据报告:

Fragment的所有子类必须包含一个公共空构造函数。框架通常会在需要时重新实例化片段类,特别是在状态恢复期间,并且需要能够找到此构造函数来实例化它。如果空构造函数不可用,则在某些情况下,在状态还原期间会发生运行时异常


使用
setArguments(Bundle)
后,可以从
片段中调用
getArguments()
来检索数据。

可以使用
newInstance
。检查文件

也检查一下这个

然后

并使用
getArguments()
检索值

String message = getArguments().getString("message");
String title = getArguments().getString("title");
getArguments()


DialogFragment类是否具有默认构造函数。如果不是,则应显式调用super(参数),作为自定义ResultDialog构造函数的第一行。另外,如果不是这样,请提供stacktrace。我还没有运行程序,但我想先解决错误,但是@Raghunandan的答案非常有效,但对于我使用的参数
args.putString(“message”,message)而不是putInt。@Manny264编辑了该部分。从文档示例粘贴的副本。打字错误。有人投了反对票
  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;
}
String message = getArguments().getString("message");
String title = getArguments().getString("title");
public final Bundle getArguments ()

Added in API level 11
Return the arguments supplied when the fragment was instantiated, if any.