轉自http://blog.csdn.net/newflypig/article/details/6246705
在Android中,Intent對象負責各個Activity視窗之間的切換,同時他更擔負起資料轉送重任。
一般情況下,使用Intent對象進行簡單視窗切換的代碼如下:
view plaincopy to clipboardprint?
- Intent i=new Intent();//建立一個Intent對象
- i.setClass(Login.this,MainTable.class);//第一個參數為當前Activity對象,第二個參數是需要切換出來的類名
- Login.this.startActivity(i);//當前Activity進行切換工作,此時將當前Activity轉入休眠狀態,不再使用CPU,只是在RAM中留有快照
Intent i=new Intent();//建立一個Intent對象i.setClass(Login.this,MainTable.class);//第一個參數為當前Activity對象,第二個參數是需要切換出來的類名Login.this.startActivity(i);//當前Activity進行切換工作,此時將當前Activity轉入休眠狀態,不再使用CPU,只是在RAM中留有快照
如果要在兩個表單之間切換,並且將一些基本的參數傳給第二個表單,這時候需要在Intent對象中put響應的索引值對
代碼如下:
view plaincopy to clipboardprint?
- Intent i=new Intent();
- i.setClass(Login.this,MainTable.class);
- i.putExtra("key", "value");//Intent中壓入一組索引值對
- Login.this.startActivity(i);
Intent i=new Intent();i.setClass(Login.this,MainTable.class);i.putExtra("key", "value");//Intent中壓入一組索引值對Login.this.startActivity(i);
第二個表單中需要將Intent對象中的索引值對取出,使用下面語句:
view plaincopy to clipboardprint?
- String value=this.getIntent().getCharSequenceExtra("key");
String value=this.getIntent().getCharSequenceExtra("key");
如此便完成簡單的字串參數的傳值和取出,如果想實現自訂類的對象在兩個表單間傳遞,其實也非常簡單,只需要將自訂類實現Serializable可序列化介面即可,這個介面純粹是一個標記,不需要你實現任何函數,實現這個介面的類可以在程式之間,線程之間,網路通訊之間進行傳值。下面示範一個執行個體:
view plaincopy to clipboardprint?
- @SuppressWarnings("serial")
- public class User implements Serializable{//User類實現了可序列化介面
- private String id;
- private String name;
- private String department;
-
- private boolean pow_freeNumber;
- private boolean pow_report;
-
- public User(String id){
- this.id=id;
- }
- }
@SuppressWarnings("serial")public class User implements Serializable{//User類實現了可序列化介面private String id;private String name;private String department;private boolean pow_freeNumber;private boolean pow_report;public User(String id){this.id=id;}}
設計了一個User類,setter&getter函數我就貼出來,比較長,在資料庫編程中我們管這種類叫做VO類
實現了可序列化介面後我們便可以將這個類的對象壓入Intent中去
view plaincopy to clipboardprint?
- Intent i=new Intent();
- i.setClass(Login.this,MainTable.class);
- User user=new User("001","丁丁");//測試資料
- user.setDepartment("業務支撐中心");
- user.setPow_freeNumber(flag);
- user.setPow_report(true);
- i.putExtra("user", user);
- Login.this.startActivity(i);
- Login.this.finish();
Intent i=new Intent();i.setClass(Login.this,MainTable.class);User user=new User("001","丁丁");//測試資料user.setDepartment("業務支撐中心");user.setPow_freeNumber(flag);user.setPow_report(true);i.putExtra("user", user);Login.this.startActivity(i);Login.this.finish();
在第二個表單中利用下面這句話,將整個User對象取出來,便可以直接使用此對象了