gpt4 book ai didi

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

转载 作者:太空宇宙 更新时间:2023-11-03 12:19:49 24 4
gpt4 key购买 nike

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

我有 2 个类 MainActivityResultDialogMainActivity 中的某些方法创建一个新对话框并将 2strings 传递给 ResultDialog 中的自定义构造函数。

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

我已经在 SO 上进行了一些搜索,但答案解释了屏幕旋转可能会破坏并使用默认构造函数重新创建屏幕,但仍然没有回答我如何解决这个问题。

The error is Avoid non-default constructors in fragments:use a default constructor plus Fragment#setArguments(Bundle) instead

请有人帮我解决这个问题,我有点困惑。我的 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
}

最佳答案

您可以使用newInstance。查看文档

http://developer.android.com/reference/android/app/Fragment.html

也检查这个

Why do I want to avoid non-default constructors in fragments?

 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.

关于java - 无法从扩展 DialogFragment 的类创建默认构造函数,我已经创建了自己的自定义构造函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19196704/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com