android使用Intent传递数据 2 种方式(Intent和Bundle)
2014-03-24 14:43
706 查看
在两个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传递数据
关键步骤二:OtherActivity.java , 通过方法一,即 用Intent直接读取传递的数据
----------------------------------------------------------------------------------------------------------------------
示例二效果图: 直接用bundle设置和读取数据。关键代码跟上面一样,只要使用以上两个Activity中注释掉的 方法二 即可。
设置数据(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传递数据
package com.android.myapp; import android.os.Bundle; import android.app.Activity; import android.content.Intent; import android.view.Menu; import android.view.View; import android.widget.Button; public class MainActivity extends Activity { private Button button; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); button = (Button)findViewById(R.id.button); button.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { // TODO Auto-generated method stub //方法一:直接用Intent传数据 Intent intent = new Intent(MainActivity.this,OtherActivity.class); intent.putExtra("name", "Nicole"); intent.putExtra("age", 25); intent.putExtra("address", "Shenzhen"); //方法二,用Bundle传数据 /* 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); */ startActivity(intent); } }); } @Override public boolean onCreateOptionsMenu(Menu menu) { // Inflate the menu; this adds items to the action bar if it is present. getMenuInflater().inflate(R.menu.main, menu); return true; } }
关键步骤二:OtherActivity.java , 通过方法一,即 用Intent直接读取传递的数据
package com.android.myapp; import android.app.Activity; import android.content.Intent; import android.os.Bundle; import android.widget.TextView; public class OtherActivity extends Activity { private TextView textView; @Override protected void onCreate(Bundle savedInstanceState) { // TODO Auto-generated method stub super.onCreate(savedInstanceState); setContentView(R.layout.activity_other); textView = (TextView)findViewById(R.id.msg); //方法一:直接用intent获取 intent 中传递的数据 Intent intent = getIntent(); String nameString = intent.getStringExtra("name"); int age = intent.getIntExtra("age",0); String addressString = intent.getStringExtra("address"); //方法二:用bundle获取 intent 中传递的数据 /* Intent intent = getIntent(); Bundle bundle = intent.getExtras(); String nameString = bundle.getString("name"); int age = bundle.getInt("age"); String addressString = bundle.getString("address"); */ String personInfo = "Dear , my love ~"+"\n"+"Name-->>"+nameString+"\n"+"Age-->>"+age+"\n"+"Address-->>"+addressString; textView.setText(personInfo); } }
----------------------------------------------------------------------------------------------------------------------
示例二效果图: 直接用bundle设置和读取数据。关键代码跟上面一样,只要使用以上两个Activity中注释掉的 方法二 即可。
相关文章推荐
- Android 使用Intent和Bundle传递数据及如何传递enum
- Android使用intent、bundle传递数据
- 【Android中级教程(三)之不同Activity之间的数据传递---Bundle对象的使用】的改进!
- Android之Intent传递数据的方式
- Android中Activity之间的数据传递(Intent和Bundle)
- Android使用Bundle进行数据传递分析
- Android中级教程之(五)----->不同Activity之间的数据传递,Bundle对象的使用!
- 【Android 开发教程】使用Intent传递数据
- Android 使用Bundle在Activity间传递数据
- android传递数据方式4--通过Intent实现Activity之间的数据传递
- android Activity之间通过Bundle和Intent传递数据
- Android--通过Intent使用Bundle如何传递对象
- Android为什么要设计出Bundle而不是直接使用HashMap来进行数据传递 Android内存优化(使用SparseArray和ArrayMap代替HashMap)
- Android中Intent结合Bundle传递数据
- android开发(26) 和其他应用交换数据方式一,使用intent指定自定义action调用其他程序里的activity,并获得其返回的结果
- 【Android】使用Intent实现数据传递之返回结果
- Android Activity传递数据使用getIntent()接收不到,揭秘Intent传递数据与Activity启动模式singleTask的关系。
- 安卓学习之--android 数据传递详解(Serialization、Parcelable、Parcel、Intent、Bundle)
- Android 通过Intent使用Bundle传递对象详细介绍
- android 数据传递详解(Serialization、Parcelable、Parcel、Intent、Bundle)