分享

android使用Intent传递数据 2 种方式(Intent和Bundle)

 linf_11 2015-05-21

在两个Activity之间传递数据,最终都是通过Intent传递,但设置数据和保存数据方式有两种(使用Intent 和 Bundle),分别对应如下:

设置数据(MainActivity.java)

方法一:1.直接用intent.putExtra("name","Nicole")

                  Intent intent = new Intent(MainActivity.this,OtherActivity.class);
                  intent.putExtra("name", "Nicole");
                  intent.putExtra("age", 25);
                  intent.putExtra("address", "Shenzhen");


方法二:2.用bundle.putString("name","Nicole") ;

                  Intent intent = new Intent(MainActivity.this,OtherActivity.class);
                  Bundle bundle = new Bundle();
                  bundle.putString("name", "Ben");
                  bundle.putInt("age", 28);
                  bundle.putString("address", "China");
                  intent.putExtras(bundle);     //将bundle传入intent中。



读取数据 (OtherActivty.java)

方法一:直接用Intent ,  String nameString = intent.getStringExtra("name");

             Intent intent = getIntent();
             String nameString = intent.getStringExtra("name");
             int age = intent.getIntExtra("age",0);
             String addressString = intent.getStringExtra("address");


方法二:用bundle , String nameString = bundle.getString("name");

             Intent intent = getIntent();
             Bundle bundle = intent.getExtras();
             String nameString = bundle.getString("name");
             int age = bundle.getInt("age");
             String addressString = bundle.getString("address");

---------------------------------------------------------------------------------------------------------------------------------------------

示例一效果图: 直接用Intent设置和读取数据



关键步骤一:MainActivity.java , 通过方法一,即直接用Intent传递数据

  1. package com.android.myapp;  
  2.   
  3. import android.os.Bundle;  
  4. import android.app.Activity;  
  5. import android.content.Intent;  
  6. import android.view.Menu;  
  7. import android.view.View;  
  8. import android.widget.Button;  
  9.   
  10. public class MainActivity extends Activity {  
  11.   
  12.     private Button button;  
  13.     @Override  
  14.     protected void onCreate(Bundle savedInstanceState) {  
  15.         super.onCreate(savedInstanceState);  
  16.         setContentView(R.layout.activity_main);  
  17.           
  18.         button = (Button)findViewById(R.id.button);  
  19.         button.setOnClickListener(new View.OnClickListener() {  
  20.               
  21.             @Override  
  22.             public void onClick(View v) {  
  23.                 // TODO Auto-generated method stub  
  24.                   
  25.                 //方法一:直接用Intent传数据                
  26.                 Intent intent = new Intent(MainActivity.this,OtherActivity.class);  
  27.                 intent.putExtra("name", "Nicole");  
  28.                 intent.putExtra("age", 25);  
  29.                 intent.putExtra("address", "Shenzhen");  
  30.               
  31.                   
  32.                 //方法二,用Bundle传数据  
  33.                 /* 
  34.                 Intent intent = new Intent(MainActivity.this,OtherActivity.class); 
  35.                 Bundle bundle = new Bundle(); 
  36.                 bundle.putString("name", "Ben"); 
  37.                 bundle.putInt("age", 28); 
  38.                 bundle.putString("address", "China"); 
  39.                 intent.putExtras(bundle);    
  40.                 */  
  41.                               
  42.                   
  43.                 startActivity(intent);    
  44.                           
  45.                   
  46.             }  
  47.         });  
  48.     }  
  49.   
  50.   
  51.     @Override  
  52.     public boolean onCreateOptionsMenu(Menu menu) {  
  53.         // Inflate the menu; this adds items to the action bar if it is present.  
  54.         getMenuInflater().inflate(R.menu.main, menu);  
  55.         return true;  
  56.     }  
  57.       
  58. }  


关键步骤二:OtherActivity.java , 通过方法一,即 用Intent直接读取传递的数据

  1. package com.android.myapp;  
  2.   
  3. import android.app.Activity;  
  4. import android.content.Intent;  
  5. import android.os.Bundle;  
  6. import android.widget.TextView;  
  7.   
  8. public class OtherActivity extends Activity {  
  9.       
  10.     private TextView textView;  
  11.       
  12.     @Override  
  13.     protected void onCreate(Bundle savedInstanceState) {  
  14.         // TODO Auto-generated method stub  
  15.         super.onCreate(savedInstanceState);  
  16.         setContentView(R.layout.activity_other);  
  17.           
  18.         textView = (TextView)findViewById(R.id.msg);  
  19.           
  20.           
  21.         //方法一:直接用intent获取 intent 中传递的数据  
  22.           
  23.         Intent intent = getIntent();  
  24.         String nameString = intent.getStringExtra("name");  
  25.         int age = intent.getIntExtra("age",0);  
  26.         String addressString = intent.getStringExtra("address");  
  27.           
  28.           
  29.           
  30.         //方法二:用bundle获取 intent 中传递的数据  
  31.         /* 
  32.         Intent intent = getIntent(); 
  33.         Bundle bundle = intent.getExtras(); 
  34.         String nameString = bundle.getString("name"); 
  35.         int age = bundle.getInt("age"); 
  36.         String addressString = bundle.getString("address"); 
  37.         */  
  38.           
  39.         String personInfo = "Dear , my love ~"+"\n"+"Name-->>"+nameString+"\n"+"Age-->>"+age+"\n"+"Address-->>"+addressString;  
  40.         textView.setText(personInfo);  
  41.     }  
  42.   
  43. }  


----------------------------------------------------------------------------------------------------------------------

示例二效果图: 直接用bundle设置和读取数据。关键代码跟上面一样,只要使用以上两个Activity中注释掉的 方法二 即可。





  

    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多