Activity之間使用Intent和Bundle傳值的區別
1.Bundle類的作用
Bundle類用作攜帶資料,它類似於Map,用於存放key-value名值對形式的值。相對於Map,它提供了各種常用型別的putXxx()/getXxx()方法,如:putString()/getString()和putInt()/getInt(),putXxx()用於往Bundle物件放入資料,getXxx()方法用於從Bundle物件裡獲取資料。Bundle的內部實際上是使用了HashMap<String,
Object>型別的變數來存放putXxx()方法放入的值。簡單地說,Bundle就是一個封裝好的包,專門用於匯入Intent傳值的包。
2.為Intent附加資料的兩種寫法
第一種寫法,用於批量新增資料到Intent:
Intentintent = new Intent();
Bundle bundle = new Bundle();//該類用作攜帶資料
bundle.putString("name","Alice");
intent.putExtras(bundle);//為意圖追加額外的資料,意圖原來已經具有的資料不會丟失,但key同名的資料會被替換
第二種寫法:這種寫法的作用等價於上面的寫法,只不過這種寫法是把資料一個個地新增進Intent,這種寫法使用起來比較方便,而且只需要編寫少量的程式碼。
Intent intent = new Intent(); intent.putExtra("name","XXX");
那麼,這兩種方法有什麼區別呢?
完全沒有區別。當你呼叫putExtras()方法時,所傳入的Bundle會被轉化為Intent的鍵值(別忘了Intent也以鍵值模式轉載資料)。
那麼,現在看看如何將Intent和Bundle取出來。
方法很簡單,直接使用this.getIntent()就可以得到傳來的Intent,然後在這個Intent的基礎上呼叫getExtras()就可以得到Bundle。然後這個Bundle你想要什麼得到什麼就get什麼。
比如String str=bundle.getString("USERNAME"); 就是得到鍵為“USERNAME”的字串,int num=bundle.getInt("Number");就是得到鍵為“Number”的整型。