Activity之間跳轉(zhuǎn)與傳值
在Android開發(fā)中,Activity之間的跳轉(zhuǎn)和數(shù)據(jù)傳遞是非常常見的操作。本文將介紹如何通過Intent類來實(shí)現(xiàn)Activity之間的跳轉(zhuǎn),并通過Bundle類來進(jìn)行數(shù)據(jù)傳遞。 一、Activi
在Android開發(fā)中,Activity之間的跳轉(zhuǎn)和數(shù)據(jù)傳遞是非常常見的操作。本文將介紹如何通過Intent類來實(shí)現(xiàn)Activity之間的跳轉(zhuǎn),并通過Bundle類來進(jìn)行數(shù)據(jù)傳遞。
一、Activity跳轉(zhuǎn)
Activity之間的跳轉(zhuǎn)可以通過Intent類來實(shí)現(xiàn),最常見的跳轉(zhuǎn)代碼如下:
Intent intent new Intent(, ); startActivity(intent);
也可以使用以下代碼:
Intent intent new Intent(); (, ); startActivity(intent);
二、數(shù)據(jù)傳遞
如果需要在跳轉(zhuǎn)頁面時(shí)傳遞數(shù)據(jù),可以使用Intent的putExtra()方法。如果只需要傳遞少量數(shù)據(jù),可以直接在啟動(dòng)Intent時(shí)添加額外的參數(shù):
Intent intent new Intent(); (, ); intent.putExtra("Name", "ppy2790"); startActivity(intent);
如果需要傳遞大量數(shù)據(jù),可以使用Bundle類來封裝數(shù)據(jù),然后將Bundle對(duì)象賦給Intent:
Intent intent new Intent(, ); Bundle bundle new Bundle(); bundle.putString("Name", "ppy2790"); bundle.putBoolean("IsMale", true); intent.putExtras(bundle); startActivity(intent);
三、獲取傳遞的值
在接收數(shù)據(jù)的另一個(gè)Activity中,可以通過getIntent().getExtras()方法獲取傳遞過來的Bundle對(duì)象,并從中獲取數(shù)據(jù):
@Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(); Bundle bundle ().getExtras(); String name ("Name"); boolean isMale ("IsMale"); }
也可以直接從Intent中獲取數(shù)據(jù):
String name ().getStringExtra("Name");
四、頁面跳轉(zhuǎn)后返回并保留數(shù)據(jù)
有時(shí)候,在頁面跳轉(zhuǎn)之后,需要返回到之前的頁面,并保留用戶之前輸入的信息。實(shí)現(xiàn)這個(gè)效果需要以下幾步:
- 從FirstActivity頁面跳轉(zhuǎn)到SecondActivity頁面時(shí),使用startActivityForResult()方法。
- 在FirstActivity頁面中重寫onActivityResult()方法,獲取來自SecondActivity頁面的數(shù)據(jù)。
- 在SecondActivity頁面上加入返回按鈕,點(diǎn)擊按鈕時(shí)設(shè)置返回結(jié)果并結(jié)束當(dāng)前Activity。
// FirstActivity中重寫onActivityResult()方法 @Override protected void onActivityResult(int requestCode, int resultCode, Intent data){ switch(requestCode){ case RESULT_OK: // 取得來自SecondActivity頁面的數(shù)據(jù),并顯示到畫面 Bundle bundle (); String name ("Name"); boolean isMale ("IsMale"); } } // SecondActivity中返回按鈕點(diǎn)擊事件 /*給上一個(gè)Activity返回結(jié)果*/ (RESULT_OK, intent); /*結(jié)束本Activity*/ ();