1. 程式人生 > >Activity之間的三種傳值方式

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());