bundle實現Activity之間的資料傳遞

weixin_34162629發表於2012-02-18

在Activity中通過Intent跳轉到另外的Activity時,如果希望同時能夠傳遞資料,則可以利用bundle,先將資料放到bundle物件中,然後為Intent新增該bundle物件,這樣就實現了引數的批量新增,

        

        Intent intent = new Intent(); 
intent.setClass(EX03_10.this,EX03_10_1.class);
/*new一個Bundle物件,並將要傳遞的資料傳入*/
Bundle bundle = new Bundle();
bundle.putDouble("height",height);
bundle.putString("sex",sex);
/*將Bundle物件assign給Intent*/
intent.putExtras(bundle);
/*呼叫Activity EX03_10_1*/
startActivity(intent);

 

關於這個知識點本人覺得傳智的講義說的比較清楚

Bundle類用作攜帶資料,它類似於Map,用於存放key-value名值對形式的值。相對於Map,它提供了各種常用型別的putXxx()/getXxx()方法,如:putString()/getString()和putInt()/getInt(),putXxx()用於往Bundle物件放入資料,getXxx()方法用於從Bundle物件裡獲取資料。Bundle的內部實際上是使用了HashMap<String, Object>型別的變數來存放putXxx()方法放入的值

在呼叫Bundle物件的getXxx()方法時,方法內部會從該變數中獲取資料,然後對資料進行型別轉換,轉換成什麼型別由方法的Xxx決定,getXxx()方法會把轉換後的值返回。

除此之外我們也可以單個新增引數,這種寫法使用起來比較方便,而且只需要編寫少量的程式碼。

Intent intent = new Intent(); 
intent.putExtra("name", "xxxxxx");



Intent提供了各種常用型別過載後的putExtra()方法,如: putExtra(String name, String value)、 putExtra(String name, long value),在putExtra()方法內部會判斷當前Intent物件內部是否已經存在一個Bundle物件,如果不存在就會新建Bundle物件,以後呼叫putExtra()方法傳入的值都會存放於該Bundle物件

相關文章