Android Bundle类 学习

Android Bundle类 .
根据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类

  1. Bundle mBundle = new Bundle();   
Bundle mBundle = new Bundle(); (2)bundle类中加入数据(key -value的形式,另一个activity里面取数据的时候,就要用到key,找出对应的value)

  1. mBundle.putString("Data""data from TestBundle");  
mBundle.putString("Data", "data from TestBundle");
(3)新建一个intent对象,并将该bundle加入这个intent对象

  1. Intent intent = new Intent();    
  2. intent.setClass(TestBundle.this, Target.class);    
  3. intent.putExtras(mBundle);  
    Intent intent = new Intent(); intent.setClass(TestBundle.this, Target.class); intent.putExtras(mBundle);完整代码如下:

    android mainfest.xml如下:

    1. <?xml version="1.0" encoding="utf-8"?>  
    2. <manifest xmlns:android="http://schemas.android.com/apk/res/android"  
    3.       package="com.tencent.test"  
    4.       android:versionCode="1"  
    5.       android:versionName="1.0">  
    6.     <application android:icon="@drawable/icon" android:label="@string/app_name">  
    7.         <activity android:name=".TestBundle"  
    8.                   android:label="@string/app_name">  
    9.             <intent-filter>  
    10.                 <action android:name="android.intent.action.MAIN" />  
    11.                 <category android:name="android.intent.category.LAUNCHER" />  
    12.             </intent-filter>  
    13.         </activity>  
    14.     <activity android:name=".Target"></activity>  
    15.     </application>  
    16.     <uses-sdk android:minSdkVersion="7" />  
    17. </manifest>   
    <?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类:

    1. import android.app.Activity;    
    2. import android.content.Intent;    
    3. import android.os.Bundle;    
    4. import android.view.View;  
    5. import android.view.View.OnClickListener;  
    6. import android.widget.Button;  
    7.   
    8. public class TestBundle extends Activity {    
    9.       
    10.     private Button button1;  
    11.     private OnClickListener cl;   
    12.     public void onCreate(Bundle savedInstanceState) {    
    13.         super.onCreate(savedInstanceState);    
    14.         setContentView(R.layout.main);  
    15.           
    16.         button1 = (Button) findViewById(R.id.button1);  
    17.         cl = new OnClickListener(){  
    18.             @Override  
    19.             public void onClick(View arg0) {  
    20.                 // TODO Auto-generated method stub   
    21.                 Intent intent = new Intent();    
    22.                 intent.setClass(TestBundle.this, Target.class);    
    23.                 Bundle mBundle = new Bundle();    
    24.                 mBundle.putString("Data""data from TestBundle");//压入数据     
    25.                 intent.putExtras(mBundle);    
    26.                 startActivity(intent);  
    27.             }  
    28.         };  
    29.         button1.setOnClickListener(cl);  
    30.     }  
    31. }    
    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) { // TODO Auto-generated method stub 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

    1. import android.app.Activity;    
    2. import android.os.Bundle;    
    3.   
    4. public class Target extends Activity{    
    5.   
    6.     public void onCreate(Bundle savedInstanceState) {    
    7.           
    8.         super.onCreate(savedInstanceState);    
    9.         setContentView(R.layout.target);    
    10.         <SPAN style="COLOR: #ff6600">Bundle bundle = getIntent().getExtras();   </SPAN> //得到传过来的bundle   
    11.         String data = bundle.getString("Data");//读出数据     
    12.         setTitle(data);    
    13.   
    14.     }    
    15. }    
    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); Bundle bundle = getIntent().getExtras(); //得到传过来的bundle String data = bundle.getString("Data");//读出数据 setTitle(data); } }
    布局文件:

    main.xml

    1. <?xml version="1.0" encoding="utf-8"?>  
    2. <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"  
    3.     android:orientation="vertical"  
    4.     android:layout_width="fill_parent"  
    5.     android:layout_height="fill_parent"  
    6.     >  
    7. <TextView    
    8.     android:layout_width="fill_parent"   
    9.     android:layout_height="wrap_content"   
    10.     android:text="@string/hello"  
    11.     />  
    12. <Button    
    13.     android:layout_width="fill_parent"   
    14.     android:layout_height="wrap_content"   
    15.     android:text="@string/button"  
    16.     android:id = "@+id/button1"  
    17.     />   
    18. </LinearLayout>  
    <?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
    1. <?xml version="1.0" encoding="utf-8"?>  
    2. <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"  
    3.     android:orientation="vertical"  
    4.     android:layout_width="fill_parent"  
    5.     android:layout_height="fill_parent"  
    6.     >  
    7. <TextView    
    8.     android:layout_width="fill_parent"   
    9.     android:layout_height="wrap_content"   
    10.     android:text="@string/target"  
    11.     />  
    12. </LinearLayout>  
    <?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

    1. <?xml version="1.0" encoding="utf-8"?>  
    2. <resources>  
    3.     <string name="hello">Hello World, TestBundle!</string>  
    4.     <string name="app_name">测试Bundle用法</string>  
    5.     <string name="button">点击跳转</string>  
    6.     <string name="target">来到target activity</string>  
    7. </resources>  
    <?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>
    结果:


    跳转结果:



    • 0
      点赞
    • 0
      收藏
      觉得还不错? 一键收藏
    • 0
      评论
    评论
    添加红包

    请填写红包祝福语或标题

    红包个数最小为10个

    红包金额最低5元

    当前余额3.43前往充值 >
    需支付:10.00
    成就一亿技术人!
    领取后你会自动成为博主和红包主的粉丝 规则
    hope_wisdom
    发出的红包
    实付
    使用余额支付
    点击重新获取
    扫码支付
    钱包余额 0

    抵扣说明:

    1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
    2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

    余额充值