• Android Bundle类


    http://blog.csdn.net/randyjiawenjie/article/details/6651437

    Android Bundle类

    分类: Android学习 18578人阅读 评论(25) 收藏 举报

    今天发现自己连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();   
    (2)bundle类中加入数据(key -value的形式,另一个activity里面取数据的时候,就要用到key,找出对应的value)
    1. 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);  
    完整代码如下:

    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>   

    两个类如下: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. }    

    类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. }    

    布局文件:

    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>  


    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>  

    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>  

    结果:


    跳转结果:



     
     
    查看评论
    24楼 lion7beckham 2013-05-13 22:47发表 [回复]
    初次接触,bundle确实不大好理解。不过说实话,用个三五次就发现,其实只是一个简单概念的组合。
    23楼 zhangjinyanll 2013-05-07 14:14发表 [回复]
    不错~学习了~谢谢分享
    22楼 gaoqilai008 2013-04-22 22:00发表 [回复]
    跟我写的没很大差别啊 还不错
    21楼 zero210 2013-04-16 14:49发表 [回复]
    谢谢楼主分享,看了之后有一种清晰的顿悟。
    20楼 ronhou 2013-04-15 19:29发表 [回复]
    写得很简单明了,THX
    19楼 until_you_candy 2013-03-27 23:15发表 [回复]
    网上看到很多这种在文章中嵌入代码的形式,并且代码很规范,怎么做到的?
    Re: randyjiawenjie 2013-03-31 16:54发表 [回复]
    回复until_you_candy:你试着发表一篇博文,就会看到相应的插入代码的功能。
    18楼 yixiaohui54321 2013-03-06 13:54发表 [回复]
    给力必须顶起
    17楼 zyyloveweb 2013-01-26 22:41发表 [回复]
    请问版主,能不能从activity中往其他的类中传递数据呢?比如说public ASdialog extends Dialog{}这样的类
    16楼 panjq882288 2012-12-30 19:50发表 [回复]
    讲的很详细,也很容易懂,版主辛苦了。。
    15楼 kingepoch 2012-12-13 10:32发表 [回复]
    bunble 也可以用到message传递值
    14楼 lb201155080209 2012-12-12 16:28发表 [回复]
    感谢
    13楼 liruixuancome 2012-08-14 17:19发表 [回复]
    Bundle与Intent传值具体有什么区别呢?
    12楼 zwjhack 2012-08-11 12:28发表 [回复]
    斑竹加油
    11楼 zanglengyu 2012-08-11 12:23发表 [回复]
    嗯 确实 非常不错,Bundle就是存储数据的键值对,可以用在两个Activity中传递数据,可以添加到Intent中
    10楼 ranyaya 2012-08-08 11:10发表 [回复]
    很好~~感谢楼主
    9楼 k_c_u_f 2012-08-01 10:52发表 [回复]
    一看就懂了,不错
    8楼 gamespring 2012-07-23 10:42发表 [回复]
    例子简单鲜明,很好理解!
    7楼 xiaoxubo214 2012-07-20 08:56发表 [回复]
    good
    6楼 harword1 2012-07-13 09:39发表 [回复]
    good
    5楼 la9297816 2012-06-15 15:46发表 [回复]
    非常好~
    4楼 xueqinjiang 2012-05-29 10:06发表 [回复]
    很好,明白了
    3楼 taoyangtao 2012-05-08 17:23发表 [回复]
    例子非常详细,谢谢版主
    2楼 alexanderwei 2011-11-16 15:48发表 [回复]
    good
    1楼 renweimian35 2011-11-04 16:39发表 [回复]
    思路清晰 谢谢 辛苦了
  • 相关阅读:
    服务器Nginx 反向代理 其他服务器 8181端口 失败的问题
    Nginx 文件下载 apk 文件下载不了
    https和http 调用过程中请求头 referrer 获取不到的问题
    windows 下 nginx log 分割
    使用Windows Service Wrapper快速创建一个Windows Service 如nginx
    VS 中 无法嵌入互操作类型“……”,请改用适用的接口的解决方法
    使用With递归查询 树
    nginx 常用命令
    (译)(function (window, document, undefined) {})(window, document); 真正的意思
    在Emacs 24.4中使用在线字典
  • 原文地址:https://www.cnblogs.com/jeanschen/p/3114880.html
Copyright © 2020-2023  润新知