您的位置:首页 > 移动开发 > Android开发

Android 使用bundle在activity之间交换数据

2016-07-03 22:50 477 查看
在android应用中,经常会有多个activity,而这些activity之间又经常需要交换数据。这时,可以将要保存的数据存放在bundle对象中,然后通过intent提供的putExtras()方法将要携带的数据保存到intent中。例如:在MainActivity中填入注册信息,点击“提交”,在RegisterActivity中进行显示。

MainActivity关键代码如下:

public class MainActivity extends Activity {
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
Button submit=(Button)findViewById(R.id.submit);
submit.setOnClickListener(new View.OnClickListener() {

@Override
public void onClick(View v) {
String user=((EditText)findViewById(R.id.user)).getText().toString();
String pwd=((EditText)findViewById(R.id.pwd)).getText().toString();
String repwd=((EditText)findViewById(R.id.repwd)).getText().toString();
String email=((EditText)findViewById(R.id.email)).getText().toString();
if(!"".equals(user) && !"".equals(pwd) && !"".equals(email)){

if(!pwd.equals(repwd)){
Toast.makeText(MainActivity.this, "两次输入的密码不一致!", Toast.LENGTH_LONG).show();
((EditText)findViewById(R.id.pwd)).setText("");
((EditText)findViewById(R.id.repwd)).setText("");
((EditText)findViewById(R.id.pwd)).requestFocus();
}else{
Intent intent = new Intent(MainActivity.this, RegisterActivity.class);
Bundle bundle = new Bundle();
bundle.putCharSequence("user", user);
bundle.putCharSequence("pwd", pwd);
bundle.putCharSequence("email", email);
intent.putExtras(bundle);
startActivity(intent);

}
}else{
Toast.makeText(MainActivity.this, "请输入完整的注册信息!", Toast.LENGTH_LONG).show();
}

}
});
}
}

RegisterActivity中关键代码:

public class RegisterActivity extends Activity {

@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.register);

Intent intent=getIntent();
Bundle bundle=intent.getExtras();
TextView user=(TextView)findViewById(R.id.user);
user.setText("用户名:"+bundle.getString("user"));
TextView pwd=(TextView)findViewById(R.id.pwd);
pwd.setText("密码:"+bundle.getString("pwd"));
TextView email=(TextView)findViewById(R.id.email);
email.setText("E-mail:"+bundle.getString("email"));
}
}


注意:在使用bundle类传递数据包时,可以放入一个可序列化的对象。这样,当要传递的数据字段比较多时,采用该方法比较方便。下面先创建一个可序列化的java类:

import java.io.Serializable;

public class Info implements Serializable {

private static final long serialVersionUID = 1L;
private String sex="";
private int stature=0;
public String getSex() {
return sex;
}
public void setSex(String sex) {
this.sex = sex;
}
public int getStature() {
return stature;
}
public void setStature(int stature) {
this.stature = stature;
}
}

提交数据的简要代码:

Info info = new Info();
info.setSex("boy");
info.setStature(1);
Bundle bundle = new Bundle();
bundle.putSerializable("info", info);
Intent intent = new Intent(MainActivity.this,ResultActivity.class);
intent.putExtras(bundle);
startActivity(intent);

接收数据的简要代码:

Intent intent = getIntent();
Bundle bundle = intent.getExtras();
Info info = (Info)bundle.getSerializable("info");
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: