Android: 如何将 Parcelable 对象传递给 Italy 并使用 bundle 的 getParcelable 方法?

为什么 bundle 有 getParcelableArrayListgetParcelable方法; 但是 Intent只有 putParcelableArrayListExtra方法? 我可以只传送 object<T>,而不是一个元素的 ArrayList吗? 那 getParcelable是干什么的?

94950 次浏览
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)