为什么捆绑包含getParcelableArrayList
,getParcelable
方法;但
Intent
只有putParcelableArrayListExtra
方法?
我只能传输一个元素的object<T>
,而不是ArrayList
吗?
那么,getParcelable
是什么?
答案 0 :(得分:147)
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");
希望这有帮助。
答案 1 :(得分:1)
Parcelable p[] =getIntent().getParcelableArrayExtra("parcel");
答案 2 :(得分:0)
发件人活动:
val intent = Intent(this, RestaurantDetails::class.java)
intent.putExtra(Constants.RESTAURANT, restaurant)
startActivity(intent)
接收器活动:
val restaurant = intent.getParcelableExtra<Restaurant>(Constants.RESTAURANT)
答案 3 :(得分:-1)
首先使用Given Technique然后
创建Parcelablepublic 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";
答案 4 :(得分:-1)
请务必记住,您的模型必须实现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);
}
}