Intent通过携带Bundle传值方式我已知有两种,但常常记混,选择多了倒不如只有一种选择,中规中矩不失为一种好的操作。
所以以后传值就用下面这种固定的方法:
从A页面向B页面传递:
注意,传递非简单数据类型(如对象)的时候,该类型要实现Serializable接口
Intent intent = new Intent(A.this, B.class);
Bundle bundle = new Bundle();
bundle.putSerializable("catPrizeBean", catPrizeBean);//传对象
bundle.putInt("position", position);//传int值(还有其他的简单数据类型)
bundle.putSerializable("catPrizeAwardList", (Serializable) mAdapter.getAllData());//传list集合
intent.putExtras(bundle);//就是这种传递bundle的方式
startActivity(intent); //B页面不回传值
//startActivityForResult(intent, REQUEST_CODE_CAT_OSCAR);B页面回传值
B页面接收A页面的传值:
Intent intent = getIntent();
if (intent == null){
return;
}
if (intent.hasExtra("catPrizeBean")){
catPrizeBean = (CatPrizeBean) intent.getSerializableExtra("catPrizeBean");//获取类对象
}
if (intent.hasExtra("position")){
position = intent.getIntExtra("position", -1);//获取int值(或者其他简单数据类型)
}
if (intent.hasExtra("catPrizeAwardList")){
catPrizeAwardList = (List<CatPrizeBean>) intent.getSerializableExtra("catPrizeAwardList");//获取list集合
}
结束。
网友评论