Android 使用bundle在activity之间交换数据
2016-07-03 22:50
477 查看
在android应用中,经常会有多个activity,而这些activity之间又经常需要交换数据。这时,可以将要保存的数据存放在bundle对象中,然后通过intent提供的putExtras()方法将要携带的数据保存到intent中。例如:在MainActivity中填入注册信息,点击“提交”,在RegisterActivity中进行显示。
MainActivity关键代码如下:
RegisterActivity中关键代码:
注意:在使用bundle类传递数据包时,可以放入一个可序列化的对象。这样,当要传递的数据字段比较多时,采用该方法比较方便。下面先创建一个可序列化的java类:
提交数据的简要代码:
接收数据的简要代码:
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");
相关文章推荐
- android services启动方式 官方文档翻译
- 跟我学Android之七 资源文件
- Android学习第一篇——Activity的启动模式
- 跟我学Android之七 资源文件
- 跟我学Android之七 资源文件
- Android Studio Gradle Configuration Errors总结
- android 视频录制 混淆打包 之native层 异常的解决
- android 视频录制 混淆打包 之native层 异常的解决
- Android跨进程通信
- Android横竖屏切换小结
- [转]Android的23种设计模式
- 自定义高德地图导航界面
- Android多线程断点续传下载
- Android 笔记整理
- Android初级教程XUtils实现“断点续传”下载
- Android初级教程XUtils实现“断点续传”下载
- Android学习笔记01——了解Android(系统框架、应用框架)
- Qt for Android 应用设置为中文名
- Android如何使用API
- android的生命周期