Activity之間的三種傳值方式
***************************************
第一種:Extras:額外的,附加的.在Intent中附加額外的訊息
//傳值
Intent intent = new Intent(this, XXXActivity.class);
intent.putExtra(key, value);
startActivity(intent);
//取值
getIntent()方法得到intent物件
Intent intent = getIntent();
//獲取Intent中的資料:getXXXExtra()方法
intent.getIntExtra(key, value);--->int
intent.getStringExtra(key);--->String
顯示方式:
吐司:Toast.makeText(this, "", Toast.LENGTH_SHORT).show();
列印:Log.i("TAG", "....");
顯示在TextView控制元件上:
mTextView.setText();
******************************************************
第二種:Bundle傳值
//傳值:
Intent物件
Intent intent = new Intent(.......);
建立Bundle物件,包裹資料
Bundle bundle = new Bundle();
bundle.putInt(key, value);
bundle.putString(...);
bundle.putBoolean(...);
......
將bundle掛載到Intent物件上
intent.putExtras(bundle);
跳轉頁面
startActivity(intent);
//取值
getIntent()得到intent物件
獲取Bundle物件
intent.getExtras();--->Bundle bundle
bundle.getInt(key);
bundle.getString(key);
...........
顯示:同上
*************************************************
第三種:通過物件方式傳值
//傳值
Intent intent = new Intent(this, XXXActivity.class);
建立一個類實現序列化(Person為例)
部分程式碼:
public class Person implements Serializable{
private static final long serialVersionUID = 1L;
private String name;
private List<String> list;
....}
建立Person物件
Person person = new Person();
person.setName(...);
List<String> list = new ArrayList<>();
list.add(...);
person.setList(list);
在intent上設定序列化物件
intent.putExtra(key, person);
跳轉
startActivity(intent);
//取值
獲取intent物件
getIntent();-->Intent intent
獲取序列化物件
intent.getSerializableExtra(key);-->Person person
顯示在TextView上:
mTextView.setText(person.toString());