将数据传递给片段时为什么这样做 - (即你应该这样做的方式)
private String mParam1;
private String mParam2;
public static ReviewPagesFragment newInstance(String param1, String param2) {
ReviewPagesFragment fragment = new ReviewPagesFragment();
Bundle args = new Bundle();
args.putString(ARG_PARAM1, param1);
args.putString(ARG_PARAM2, param2);
fragment.setArguments(args);
return fragment;
}
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
if (getArguments() != null) {
mParam1 = getArguments().getString(ARG_PARAM1);
mParam2 = getArguments().getString(ARG_PARAM2);
}
}
而不是这样做
private String mParam1;
private String mParam2;
public static ReviewPagesFragment newInstance(String param1, String param2) {
ReviewPagesFragment fragment = new ReviewPagesFragment();
fragment.mParam1 = param1;
fragment.mParam2 = param2;
return fragment;
}
第二种方式更简单,并为您提供更好的性能。我是K.I.S.S.的粉丝。所以我的问题是 - 为什么推荐方式的第一种方式以及通过这种方式获得的好处是什么?
答案 0 :(得分:2)
使用Bundle可以使片段在重新创建时保持状态。这是一个更彻底的解释:Best practice for instantiating a new Android Fragment