2

除了使用 newIstance() 时,我几乎了解这段代码中的所有内容。谁能解释一下。非常感激。

public class DateDialogFragment extends DialogFragment {

public static String TAG = "DateDialogFragment";

static Context sContext;
static Calendar sDate;
static DateDialogFragmentListener sListener;

public static DateDialogFragment newInstance(Context context, int titleResource, Calendar date){
    DateDialogFragment dialog  = new DateDialogFragment();

sContext = context;
    sDate = date;

Bundle args = new Bundle();
args.putInt("title", titleResource);
dialog.setArguments(args);
return dialog;
   }
}

我进行了编辑,我猜它在静态时的工作方式不同。我想这就是我感到困惑的原因。静态时方法如何更改?我真的不明白为什么不在构造函数中这样做?

4

1 回答 1

2

使用片段(任何扩展的类Fragment)时,您经常需要传递一些数据。这是通过使用setArguments接收Bundle. 由于这样做需要大量代码(创建包、考虑键名等),因此通常将数据传递给静态方法(通常称为newInstance)。该方法的想法是创建参数包并将其传递给Fragment; 然后它返回片段,你可以把它放在你想要的任何地方。

以这种方式使用片段的另一个优点是,当您直接在 XML 布局中插入片段时,必须有一个空的构造函数(或者根本没有)。如果您使用构造函数创建片段(以传递其必要的数据),您可能会收到一些关于缺少空构造函数的错误。

于 2012-06-02T01:55:01.913 回答