使用Parcelable比直接在android中设置对象更好吗?

时间:2017-10-02 20:54:28

标签: android android-fragments android-intent parcelable

我想知道在创建新片段时直接设置对象是一种很好的做法,如下例所示,或者我们应该始终使对象Parcelable并通过intent吗?

公共类示例扩展Fragment {

private Object obj1;

public static sample newInstance(Object obj) {
     sample fragment = new sample();
    fragment.setObj1(obj);
    return fragment;
}

public void setObj1(Object obj1) {
    this.obj1 = obj1;
}

@Override
public void onCreate(@Nullable Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
}

@Nullable
@Override
public View onCreateView(LayoutInflater inflater, @Nullable ViewGroup container, Bundle savedInstanceState) {
    return super.onCreateView(inflater, container, savedInstanceState);
}

}

在任何一种情况下,如果某人能够告诉我为什么一个人比另一个人更好会有所帮助呢?

1 个答案:

答案 0 :(得分:1)

是的,您必须将setArguments与包含所有Parcelables的Bundle一起使用。

这是因为在重新创建时,您的Fragment只能访问它getArguments(),并且所有局部变量都将为null(或默认为基元)。

要走的路是在你的newInstance

public static sample newInstance(String obj) {
   sample fragment = new sample();
   Bundle args = new Bundle();
   args.putString(STRING_PARAM_KEY, obj);
   fragment.setArguments(args);
   return fragment;
}

然后在你的onCreateView

 obj1 = getArguments().getString(STRING_PARAM_KEY);

只需在你的班级中声明一个关键的常量

 static final String STRING_PARAM_KEY = "string_param_key";