前面的帖子介绍过Bundle类:http://blog.csdn.net/zhangjikuan/article/details/20528653
这里说一下Intent Bundle在Activity间传递数据
activity间传递数据的方法又两种
1.直接通过intent:(intent本来就是activity间传递信息的eg:一个activity启动另一个activity)
intent对象的方法:putExtra(string name ,Xxx value)//Xxx可为int long string array
getXxxExtra(string name )
注:此方法是智能的,当intent携带bundle的时候调用此方法会直接把数据添加到bundle中
2.通过intent和bundle:
intent对象的方法putExtas( Bundle data) Bundle getExtras()//返回的是bundle数据
bundle对象的方法 putXxx(string key,Xxx data); putSerializable(string key ,Serializable data)//放入一个可序列化的对象
getXxx(string key) getSerializable(string key ,Serializable)
下面的例子是用一个activity显示并可输入注册信息,点击注册会将数据传送个另一个activity显示出来注册信息
/**
* 此文件是显示注册信息,并将注册信息通过Intent和bundle发送给ResultActivity
*/
public class MainActivity extends Activity
{
@Override
public void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
Button bn = (Button) findViewById(R.id.bn);
bn.setOnClickListener(new OnClickListener()
{
public void onClick(View v)
{
EditText name = (EditText)findViewById(R.id.name);
EditText passwd = (EditText)findViewById(R.id.passwd);
RadioButton male = (RadioButton) findViewById(R.id.male);
String gender = male.isChecked() ? "男 " : "女";
Person p = new Person(name.getText().toString(), passwd //person是自己定义的一个可序列化的接口
.getText().toString(), gender);
// 创建一个Bundle对象
Bundle data = new Bundle();
data.putSerializable("person", p);
// 创建一个Intent
Intent intent = new Intent(MainActivity.this,
ResultActivity.class);
intent.putExtras(data);
// 启动intent对应的Activity
startActivity(intent);
}
});
}
}
**
* 此activity文件是接收MainActivity文件传送过来的数据并显示
*/
public class ResultActivity extends Activity
{
@Override
public void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
setContentView(R.layout.result);
TextView name = (TextView) findViewById(R.id.name);
TextView passwd = (TextView) findViewById(R.id.passwd);
TextView gender = (TextView) findViewById(R.id.gender);
// 获取启动该Result的Intent
Intent intent = getIntent();
// 直接通过Intent取出它所携带的Bundle数据包中的数据
Person p = (Person) intent.getSerializableExtra("person");
name.setText("您的用户名为:" + p.getName());
passwd.setText("您的密码为:" + p.getPass());
gender.setText("您的性别为:" + p.getGender());
}
}
/**
*这是定义了一个可序列化的接口
*/
public class Person implements Serializable
{
/**
*
*/
private static final long serialVersionUID = 1L;
private Integer id;
private String name;
private String pass;
private String gender;
public Person()
{
}
/**
* @param name
* @param pass
* @param gender
*/
public Person(String name, String pass, String gender)
{
this.name = name;
this.pass = pass;
this.gender = gender;
}
public Integer getId()
{
return id;
}
public void setId(Integer id)
{
this.id = id;
}
public String getName()
{
return name;
}
public void setName(String name)
{
this.name = name;
}
public String getPass()
{
return pass;
}
public void setPass(String pass)
{
this.pass = pass;
}
public String getGender()
{
return gender;
}
public void setGender(String gender)
{
this.gender = gender;
}
}
最后注意在AndroidManifest文件中的配置