根據google官方的文檔(http://developer.android.com/reference/android/os/Bundle.html)
?
Bundle類是一個key-value對,“A mapping from String values to various Parcelable types.”
類繼承關系:
java.lang.Object
? ? ?android.os.Bundle
Bundle類是一個final類:
public final class
Bundle
extends Objectimplements Parcelable Cloneable
兩個activity之間的通訊可以通過bundle類來實現,做法就是:
(1)新建一個bundle類
?
[java]?view plaincopy
Bundle?mBundle?=?new?Bundle();??? (2)bundle類中加入數據(key -value的形式,另一個activity里面取數據的時候,就要用到key,找出對應的value)
?
?
[java]?view plaincopy
mBundle.putString("Data",?"data?from?TestBundle");??
(3)新建一個intent對象,并將該bundle加入這個intent對象
?
?
[cpp]?view plaincopy
Intent?intent?=?new?Intent();????intent.setClass(TestBundle.this,?Target.class);????intent.putExtras(mBundle);?? 完整代碼如下:
?
android mainfest.xml如下:
?
[java]?view plaincopy
<?xml?version="1.0"?encoding="utf-8"?>??<manifest?xmlns:android="http://schemas.android.com/apk/res/android"????????package="com.tencent.test"????????android:versionCode="1"????????android:versionName="1.0">??????<application?android:icon="@drawable/icon"?android:label="@string/app_name">??????????<activity?android:name=".TestBundle"????????????????????android:label="@string/app_name">??????????????<intent-filter>??????????????????<action?android:name="android.intent.action.MAIN"?/>??????????????????<category?android:name="android.intent.category.LAUNCHER"?/>??????????????</intent-filter>??????????</activity>??????<activity?android:name=".Target"></activity>??????</application>??????<uses-sdk?android:minSdkVersion="7"?/>??</manifest>???
兩個類如下:intent從TestBundle類發起,到Target類。
?
類1:TestBundle類:
?
[java]?view plaincopy
import?android.app.Activity;????import?android.content.Intent;????import?android.os.Bundle;????import?android.view.View;??import?android.view.View.OnClickListener;??import?android.widget.Button;????public?class?TestBundle?extends?Activity?{??????????????private?Button?button1;??????private?OnClickListener?cl;???????public?void?onCreate(Bundle?savedInstanceState)?{????????????super.onCreate(savedInstanceState);????????????setContentView(R.layout.main);????????????????????button1?=?(Button)?findViewById(R.id.button1);??????????cl?=?new?OnClickListener(){??????????????@Override??????????????public?void?onClick(View?arg0)?{??????????????????????????????????Intent?intent?=?new?Intent();????????????????????intent.setClass(TestBundle.this,?Target.class);????????????????????Bundle?mBundle?=?new?Bundle();????????????????????mBundle.putString("Data",?"data?from?TestBundle");????????????????intent.putExtras(mBundle);????????????????????startActivity(intent);??????????????}??????????};??????????button1.setOnClickListener(cl);??????}??}????
類2: Target
?
?
[java]?view plaincopy
import?android.app.Activity;????import?android.os.Bundle;??????public?class?Target?extends?Activity{??????????public?void?onCreate(Bundle?savedInstanceState)?{??????????????????????super.onCreate(savedInstanceState);????????????setContentView(R.layout.target);????????????<span?style="color:#ff6600;">Bundle?bundle?=?getIntent().getExtras();???</span>?????????String?data?=?bundle.getString("Data");????????setTitle(data);??????????}????}????
布局文件:
?
main.xml
?
[java]?view plaincopy
<?xml?version="1.0"?encoding="utf-8"?>??<LinearLayout?xmlns:android="http://schemas.android.com/apk/res/android"??????android:orientation="vertical"??????android:layout_width="fill_parent"??????android:layout_height="fill_parent"??????>??<TextView????????android:layout_width="fill_parent"???????android:layout_height="wrap_content"???????android:text="@string/hello"??????/>??<Button????????android:layout_width="fill_parent"???????android:layout_height="wrap_content"???????android:text="@string/button"??????android:id?=?"@+id/button1"??????/>???</LinearLayout>?? ?
?
target.xml
[java]?view plaincopy
<?xml?version="1.0"?encoding="utf-8"?>??<LinearLayout?xmlns:android="http://schemas.android.com/apk/res/android"??????android:orientation="vertical"??????android:layout_width="fill_parent"??????android:layout_height="fill_parent"??????>??<TextView????????android:layout_width="fill_parent"???????android:layout_height="wrap_content"???????android:text="@string/target"??????/>??</LinearLayout>?? ?
String.xml
?
[java]?view plaincopy
<?xml?version="1.0"?encoding="utf-8"?>??<resources>??????<string?name="hello">Hello?World,?TestBundle!</string>??????<string?name="app_name">測試Bundle用法</string>??????<string?name="button">點擊跳轉</string>??????<string?name="target">來到target?activity</string>??</resources>??
結果:
?
跳轉結果:
?
http://blog.csdn.net/randyjiawenjie/article/details/6651437
轉載于:https://www.cnblogs.com/xlchen/p/4215488.html
總結
以上是生活随笔為你收集整理的Android Bundle类,通过bundle实现在两个activity之间的通讯的全部內容,希望文章能夠幫你解決所遇到的問題。
如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。