为什么 bundle 有getParcelableArrayList
,getParcelable
方法;但
Intent
只有putParcelableArrayListExtra
方法?我可以只传输object<T>
,而不是ArrayList
一种元素吗?那么,究竟是getParcelable
为了什么?
问问题
88857 次
5 回答
168
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");
希望这可以帮助。
于 2012-04-11T22:33:37.167 回答
1
Parcelable p[] =getIntent().getParcelableArrayExtra("parcel");
于 2012-04-11T14:03:15.870 回答
0
发件人活动:
val intent = Intent(this, RestaurantDetails::class.java)
intent.putExtra(Constants.RESTAURANT, restaurant)
startActivity(intent)
接收器活动:
val restaurant = intent.getParcelableExtra<Restaurant>(Constants.RESTAURANT)
于 2021-03-27T05:03:51.677 回答
-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);
}
}
于 2017-08-21T19:35:20.923 回答
-2
首先使用Given Technique创建 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";
于 2017-05-03T12:53:22.600 回答