標籤:
Intent的用法大家比較熟悉了,可以藉助它來啟動活動,發送廣播,啟動服務等。在進行上述操作的時候,還可以在Intent中添加一些附加資料, 以達到傳值的效果,比如在FirstActivity中添加如下代碼
Intent intent=new Intent(HLActivity.this,SecondActivity.class);
intent.putExtra("string_data","hello");
intent.putExtra("int_data",100);
startActivity(intent);
這裡調用了Intent的putExtra()方法來添加要傳遞的資料,之後在SecondActivity中就可以得到這些值了,代碼如下:
getIntent().getStringExtra("string_data");
getIntent().getIntExtra("int_data",0);
但是putExtra()方法中所支援的資料類型是有限的,雖然常用的一些資料類型它都支援,但是當你想去傳遞一些自訂對象的時候不方便。
使用Intent傳遞對象通常有兩種實現方式,Serializable和Parcelable
Serializable是序列化的意思,表示將一個對象轉換成可儲存或可傳輸的狀態。序列化後的對象可以在網路上進行傳輸,也可以儲存到本地。序列化方法很簡單,只需讓一個類去實現Serializable這個介面就可以了。比如一個Person類,其中包含了name和age這兩個欄位,想要將其序列化就可以這樣寫。
public class Person implements Serializable
{
private String name;
private int age;
setters getters; //set和get方法
}
FirstActivity:
Person person=new Person();
person.setName("Tom");
person.setAge(20);
Intent intent=new Intent(FirstActivity.this,SecondActivity.class);
intent.putExtra("person_data",person);
startActivity(intent);
SecondActivity:
Person person=(Person)getIntent().getSerializableExtra("person_data");
Intent傳遞對象