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

时间:2012-04-11 13:58:09

标签: android android-intent bundle parcelable

为什么捆绑包含getParcelableArrayListgetParcelable方法;但 Intent只有putParcelableArrayListExtra方法? 我只能传输一个元素的object<T>,而不是ArrayList吗? 那么,getParcelable是什么?

5 个答案:

答案 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然后

创建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";

答案 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);
        }
    }