为什么捆绑有getParcelableArrayList
,getParcelable
方法;但是
Intent
只有putParcelableArrayListExtra
方法吗?我只能传送object<T>
,不能传送ArrayList
一个元素吗?那是getParcelable
为了什么
Answers:
Intent提供了一堆重载的putExtra()方法。
假设您有一个Foo类正确地实现了Parcelable,将其放入Activity中的Intent中:
Intent intent = new Intent(getBaseContext(), NextActivity.class);
Foo foo = new Foo();
intent.putExtra("foo ", foo);
startActivity(intent);
要从其他活动中获取它:
Foo foo = getIntent().getExtras().getParcelable("foo");
希望这可以帮助。
重要的是要记住,您的模型必须实现Parcelable接口和静态CREATOR方法。这种情况是列表
private static final String MODEL_LIST = "MODEL_LIST";
public MainFragment() {}
public static MainFragment newInstance(ArrayList<YourModel>
models) {
MainFragment fragment = new MainFragment();
Bundle args = new Bundle();
args.putParcelableArrayList(MODEL_LIST,models);
fragment.setArguments(args);
return fragment;
}
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
if (getArguments() != null) {
ArrayList<YourModel> models = getArguments().getParcelableArrayList(MODEL_LIST);
}
}
首先使用给定技术创建Parcelable,然后
public static CreditCardDetail newInstance(CreditCardItemBO creditCardItem) {
CreditCardDetail fragment = new CreditCardDetail();
Bundle args = new Bundle();
args.putParcelable(CREDIT_KEY,creditCardItem);
fragment.setArguments(args);
return fragment;
}
并得到像
if(getArguments() != null)
{
creditCardItem = getArguments().getParcelable(CREDIT_KEY);
}
哪里
public static final String CREDIT_KEY = "creditKey";