Bundle對象的使用


在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官網去參考。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM