【问题标题】:Is it better to use Parcelable than setting object directly in android?使用 Parcelable 比直接在 android 中设置对象更好吗?
【发布时间】:2017-10-02 20:54:28
【问题描述】:

我想知道在创建新的 Fragment 时直接设置对象是一种好习惯,如下例所示,还是我们应该始终将对象设为 Parcelable 并通过意图?

公共类示例扩展片段{

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);
}

}

在任何一种情况下,如果有人能告诉我为什么一个比另一个更好的理由会很有帮助?

【问题讨论】:

标签: android android-fragments android-intent parcelable


【解决方案1】:

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

那是因为重新创建时,您的 Fragment 将只能访问它 getArguments() 并且所有局部变量都将为空(或原语的默认值)。

要走的路是在你的新实例中

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";

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2012-07-29
    • 1970-01-01
    • 1970-01-01
    • 2016-02-03
    • 1970-01-01
    • 1970-01-01
    • 2011-11-13
    • 1970-01-01
    相关资源
    最近更新 更多