为什么束具有getParcelableArrayList
, getParcelable
方法; 但是Intent
只有putParcelableArrayListExtra
方法? 可以我仅发送object<T>
不ArrayList
一个元件的? 那么,什么是getParcelable
呢?
Answer 1:
意图提供一堆超载putExtra()方法。
假设你有一个类Foo实现Parcelable得当,把它变成意图在一个活动:
Intent intent = new Intent(getBaseContext(), NextActivity.class);
Foo foo = new Foo();
intent.putExtra("foo ", foo);
startActivity(intent);
为了从另一个动作的意图得到它:
Foo foo = getIntent().getExtras().getParcelable("foo");
希望这可以帮助。
Answer 2:
Parcelable p[] =getIntent().getParcelableArrayExtra("parcel");
Answer 3:
首先创建一个使用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";
Answer 4:
重要的是要记住,你的模型必须实现是非常重要的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);
}
}
文章来源: Android: How to pass Parcelable object to intent and use getParcelable method of bundle?