在Android開發中,如果要通過一個Activity啟動另外一個Activity,需要調用startActivity()函數,這個函數的參數是一個Intent對象,這個對象通常的初始化方式如下:
Intent intent = new Intent();
intent.setClass(this,SecondActivity.class);
startActivity(intent);
這樣就完成了一個新的Activity的啟動,但是這種啟動方式兩個Activity之間不會有任何的數據傳遞,很多情況下,我們遇到的往往是前一個Activity要把數據傳遞給新啟動的Activity,這就要用到Bundle對象了。
比如在第一個Activity中,我們獲取了身高和性別兩種數據,需要傳遞給新啟動的Activity,那么就要把這些數據封裝進Bundle對象里面,再把Bundle對象assign給Intent,作為starActivity()函數的參數。
實現代碼如下:
Intent intent = new Intent();
intent.setClass(this,SecondActivity.class);
//封裝Bundle對象
Bundle bundle = new Bundle();
bundle.putDouble("height",height);//height為double型變量
bundle.putString("sex",sex);//sex為string型變量
//把Bundle對象assign給Intent
intent.putExtras(bundle);
startActivity(intent);
第二個Activity相應的也要接收數據,方法也很簡單,先從Intent對象中分離Bundle,再按照相同方法提取數據。
實現代碼如下:
Bundle bundle1=this.getIntent().getExtras();
String sex=bundle1.getString("sex");
double height=bundle1.getDouble("height");
值得注意的是,如果程序中有多個Activity,要在AndroidManifest.xml中聲明,聲明一個Activity格式如下:
<activity android:name="SecondActivity"></activity>
當存在多個Activity時,必須指定一個最先啟動的Activity,也是在AndroidManifest.xml中聲明,聲明方式如下:
<activity android:name="SecondActivity">
<intent-filter>
<action android:name="android.intent.action.MAIN"/>
<category android:name="android.intent.category.LAUNCHER"/>
</intent-filter>
</activity>
Bundle對象還有其他很多種對不同數據類型的操作方法,比如getBoolean等,具體可以到Android官網去參考。