Bundle主要用于传递数据;它保存的数据,是以key-value(键值对)的形式存在的。
我们经常使用Bundle在Activity之间传递数据,传递的数据可以是boolean、byte、int、long、float、double、string等基本类型或它们对应的数组,也可以是对象或对象数组。
当Bundle传递的是对象或对象数组时,必须实现Serializable 或Parcelable接口。下面分别介绍Activity之间如何传递基本类型、传递对象。
1.Bundle的方法的数据类型:
Bundle提供了各种常用类型的putXxx()/getXxx()方法,用于读写基本类型的数据。
Bundle操作基本数据类型的API表格如下所示:
2.添加数据的代码:
btn.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { String sate1=((EditText)findViewById(R.id.site1)).getText().toString(); String sate2=((EditText)findViewById(R.id.site2)).getText().toString(); String sate3=((EditText)findViewById(R.id.site3)).getText().toString(); String phone=((EditText)findViewById(R.id.phone)).getText().toString(); String name=((EditText)findViewById(R.id.name)).getText().toString(); if(!"".equals(sate1)&&!"".equals(sate2)&&!"".equals(sate3)&&!"".equals(phone)&&!"".equals(name)){ Intent intent=new Intent(MainActivity.this,AddressActivity.class); Bundle bundle=new Bundle(); bundle.putString("name",name); bundle.putString("phone",phone); bundle.putString("sate",sate1+sate2+sate3); intent.putExtra("bundle",bundle); startActivity(intent); }else{ Toast.makeText(MainActivity.this,"请将信息填写完整",Toast.LENGTH_SHORT).show(); } } });
3.在.java文件中传输数据到xml文件中:
public class Activity extends AppCompatActivity { @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity); Intent intent=getIntent(); Bundle bundle=intent.getBundleExtra("bundle"); TextView age=(TextView) findViewById(R.id.age); TextView name=(TextView)findViewById(R.id.name); TextView sex=(TextView)findViewById(R.id.sex); age.setText(bundle.getString("age")); sex.setText(bundle.getString("sex")); name.setText(bundle.getString("name")); ImageView down=(ImageView) findViewById(R.id.down); close.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { finish(); } }); } }
publicclass AddressActivity extends AppCompatActivity { @Override protectedvoid onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_address); Intent intent=getIntent(); Bundle bundle=intent.getBundleExtra("bundle"); TextView site=(TextView) findViewById(R.id.site); TextView name=(TextView)findViewById(R.id.name); TextView phone=(TextView)findViewById(R.id.phone); site.setText(bundle.getString("sate")); phone.setText(bundle.getString("phone")); name.setText(bundle.getString("name")); ImageView close=(ImageView) findViewById(R.id.close); close.setOnClickListener(new View.OnClickListener() { @Override publicvoid onClick(View v) { finish(); } }); } }