为什么 bundle 有 getParcelableArrayList,getParcelable方法; 但是 Intent只有 putParcelableArrayListExtra方法? 我可以只传送 object<T>,而不是一个元素的 ArrayList吗? 那 getParcelable是干什么的?
getParcelableArrayList
getParcelable
Intent
putParcelableArrayListExtra
object<T>
ArrayList
Parcelable p[] =getIntent().getParcelableArrayExtra("parcel");
意图提供了大量重载 PutUltra ()方法。
假设您有一个类 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");
希望这个能帮上忙。
然后,首先使用 给定的技巧创建 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";
一定要记住,您的模型必须实现 可包装的接口和静态 创造者方法。这案子是为了名单
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); } }
寄件人活动:
val intent = Intent(this, RestaurantDetails::class.java) intent.putExtra(Constants.RESTAURANT, restaurant) startActivity(intent)
接收器活动:
val restaurant = intent.getParcelableExtra<Restaurant>(Constants.RESTAURANT)