首页 > 代码库 > Activity学习(五)——Bundle机制

Activity学习(五)——Bundle机制

上一篇文章我简单介绍了Activity之间简单切换,很简单,这一篇文章我们继续聊Android中程序页面互相跳转的Activity,不过这一次我们在Activity跳转时,携带一些简单的数据,然后在新的Activity中将携带的数据展示出来。

        不过请谨记我们这边暂时先携带一些简单的数据(简单的数据类型包括String),而不是那些大额的对象实例 ,在Activity中携带实例我们以后再论。

        在Intent中我们使用putExtras方法携带数据,在例子中我们就介绍将数据存放到Bundle中,然后putExtras带上Bundle参数,代码如下:

Java代码
  1. public class ActivityA extends Activity {  
  2.     private Button button;  
  3.   
  4.       
  5.     @Override  
  6.     public void onCreate(Bundle savedInstanceState) {  
  7.         super.onCreate(savedInstanceState);  
  8.         setContentView(R.layout.layout_for_a);  
  9.   
  10.         // 设置当前的的Activity的标题,以作为标记使用  
  11.         setTitle("这是Activity A");  
  12.   
  13.         // 获取布局文件中的button  
  14.         button = (Button) findViewById(R.id.a_button);  
  15.   
  16.         // 给button设置文字  
  17.         button.setText("A跳B");  
  18.   
  19.         // button添加监听事件  
  20.         button.setOnClickListener(new OnClickListener() {  
  21.   
  22.             @Override  
  23.             public void onClick(View v) {  
  24.                 // TODO Auto-generated method stub  
  25.                 // 调用AtoB  
  26.                 AtoB();  
  27.             }  
  28.         });  
  29.     }  
  30.   
  31.       
  32.     public void AtoB() {  
  33.   
  34.         // intent很重要,是两个Activity之间的纽带  
  35.         Intent in = new Intent();  
  36.   
  37.         // 使用intent连接两个Activity,一个参数是当前的上下文(context),还有一个是要切换到的Activity主类  
  38.         in.setClass(this, ActivityB.class);  
  39.         //需要传出去的数据字串          
  40.         String hello = "我是来自Bundle中的数据";  
  41.         //我们把要传出去的字串放到bundle中  
  42.         Bundle extras = new Bundle();  
  43.         //第一个参数是key值,取的通过这个key就可以拿到这个bundle中的数据了  
  44.         extras.putString("intent_bundle", hello);  
  45.         //将bundle放进Intent中    
  46.         in.putExtras(extras);  
  47.         // 跳转  
  48.         startActivity(in);  
  49.     }  
  50. }  

        我们再在另外一个ActivityB中添加展示数据的代码,如下:

Java代码
  1. public class ActivityB extends Activity {  
  2.     private Button button;  
  3.     private TextView textView;  
  4.       
  5.       
  6.     @Override  
  7.     public void onCreate(Bundle savedInstanceState) {  
  8.         super.onCreate(savedInstanceState);  
  9.         setContentView(R.layout.layout_for_b);  
  10.   
  11.         // 设置当前的的Activity的标题,以作为标记使用  
  12.         setTitle("这是Activity B");  
  13.   
  14.         // 获取布局文件中的button和textView  
  15.         button = (Button) findViewById(R.id.b_button);  
  16.         textView = (TextView) findViewById(R.id.show_tv);  
  17.   
  18.         String show = getData();  
  19.         //让textView显示取出来的数据  
  20.         if (show != null){  
  21.             textView.setText(show);  
  22.         } else {  
  23.             textView.setText("nothing");  
  24.         }  
  25.           
  26.           
  27.         // 给button设置文字  
  28.         button.setText("B跳A");  
  29.   
  30.         // button添加监听事件  
  31.         button.setOnClickListener(new OnClickListener() {  
  32.   
  33.             @Override  
  34.             public void onClick(View v) {  
  35.                 // TODO Auto-generated method stub  
  36.                 // 调用AtoB  
  37.                 BtoA();  
  38.             }  
  39.         });  
  40.     }  
  41.   
  42.       
  43.     public String getData(){  
  44.         Bundle extra = new Bundle();  
  45.         extra = getIntent().getExtras();  
  46.         if (extra != null){  
  47.             return extra.getString("intent_bundle");  
  48.         }else {  
  49.             return null;  
  50.         }  
  51.     }  
  52.       
  53.       
  54.     public void BtoA() {  
  55.   
  56.         // intent很重要,是两个Activity之间的纽带  
  57.         Intent in = new Intent();  
  58.   
  59.         // 使用intent连接两个Activity,一个参数是当前的上下文(context),还有一个是要切换到的Activity主类  
  60.         in.setClass(this, ActivityA.class);  
  61.   
  62.         // 跳转  
  63.         startActivity(in);  
  64.     }  
  65. }  

       运行效果截图如下:

 

Activity学习(五)——Bundle机制