第五天:Bundle数据传递、StartActivityForResult传值
2016-04-23 00:00
411 查看
摘要: Bundle数据传递、StartActivityForResult传值
StartActivityForResult
onActivityResult
setResult
传递步骤:
接收步骤:
StartActivityForResult传值
使用StartActivityForResult传值,如果想在Activity中得到新打开Activity 关闭后返回的数据,需要使用系统提供的startActivityForResult(Intent intent, int requestCode)方法打开新的Activity,新的Activity 关闭后会向前面的Activity传回数据,为了得到传回的数据,必须在前面的Activity中重写onActivityResult(int requestCode, int resultCode, Intent data)方法。
请求码的作用
使用startActivityForResult(Intent intent, int requestCode)方法打开新的Activity,我们需要为startActivityForResult()方法传入一个请求码(第二个参 数)。请求码的值是根据业务需要由自已设定,用于标识请求来源。例如:一个Activity有两个按钮,点击这两个按钮都会打开同一个Activity, 不管是那个按钮打开新Activity,当这个新Activity关闭后,系统都会调用前面Activity的onActivityResult(int requestCode, int resultCode, Intent data)方法。在onActivityResult()方法如果需要知道新Activity是由那个按钮打开的,并且要做出相应的业务处理,这时可以这 样做:
结果码的作用
在一个Activity中,可能会使用startActivityForResult()方法打开多个不同的Activity处理不同的业务,当这 些新Activity关闭后,系统都会调用前面Activity的onActivityResult(int requestCode, int resultCode, Intent data)方法。为了知道返回的数据来自于哪个新Activity,在onActivityResult()方法中可以这样做 (ResultActivity和NewActivity为要打开的新Activity):
StartActivityForResult
onActivityResult
setResult
传递步骤:
Intent intent=new Intent(MainActivity.this,secondActivity.class); Bundle bundle=new Bundle(); //传递基本数据类型 bundle.putInt("age",23); bundle.putString("name",张三); //传递对象 Student student=new Student(); student.name=""; student.age=""; bundle.putSerializable("student",student); //传递集合 ArrayList<String> list=new ArrayList<>(); list.add("sld"); list.add("nothing"); bundle.putStringArrayList("list",list); intent.putExtras(bundle); startActivity(intent);
接收步骤:
Intent intent=getIntent(); Bundle bundle=intent.getExtras(); //接收基本数据类型 int age=bundle.getInt("age"); String name=bundle.getString("name"); //接收对象 Student student=(Student)bundle.getSerializable("student"); //接收集合 ArrayList<String> list=bundle.getStringArrayList("list");
StartActivityForResult传值
使用StartActivityForResult传值,如果想在Activity中得到新打开Activity 关闭后返回的数据,需要使用系统提供的startActivityForResult(Intent intent, int requestCode)方法打开新的Activity,新的Activity 关闭后会向前面的Activity传回数据,为了得到传回的数据,必须在前面的Activity中重写onActivityResult(int requestCode, int resultCode, Intent data)方法。
请求码的作用
使用startActivityForResult(Intent intent, int requestCode)方法打开新的Activity,我们需要为startActivityForResult()方法传入一个请求码(第二个参 数)。请求码的值是根据业务需要由自已设定,用于标识请求来源。例如:一个Activity有两个按钮,点击这两个按钮都会打开同一个Activity, 不管是那个按钮打开新Activity,当这个新Activity关闭后,系统都会调用前面Activity的onActivityResult(int requestCode, int resultCode, Intent data)方法。在onActivityResult()方法如果需要知道新Activity是由那个按钮打开的,并且要做出相应的业务处理,这时可以这 样做:
@Override public void onCreate(Bundle savedInstanceState) { .... button1.setOnClickListener(new View.OnClickListener(){ public void onClick(View v) { startActivityForResult (new Intent(MainActivity.this, NewActivity.class), 1); } }); button2.setOnClickListener(new View.OnClickListener(){ public void onClick(View v) { startActivityForResult (new Intent(MainActivity.this, NewActivity.class), 2); } & 7fe0 nbsp; }); @Override protected void onActivityResult(int requestCode, int resultCode, Intent data) { switch(requestCode){ case 1: //来自按钮1的请求,作相应业务处理 case 2: //来自按钮2的请求,作相应业务处理 } }}
结果码的作用
在一个Activity中,可能会使用startActivityForResult()方法打开多个不同的Activity处理不同的业务,当这 些新Activity关闭后,系统都会调用前面Activity的onActivityResult(int requestCode, int resultCode, Intent data)方法。为了知道返回的数据来自于哪个新Activity,在onActivityResult()方法中可以这样做 (ResultActivity和NewActivity为要打开的新Activity):
public class ResultActivity extends Activity { ..... ResultActivity.this.setResult(1, intent); ResultActivity.this.finish(); } public class NewActivity extends Activity { ...... NewActivity.this.setResult(2, intent); NewActivity.this.finish(); } public class MainActivity extends Activity { // 在该Activity会打开ResultActivity和NewActivity @Override protected void onActivityResult(int requestCode, int resultCode, Intent data) { switch(resultCode){ case 1: // ResultActivity的返回数据 case 2: // NewActivity的返回数据 } } }
相关文章推荐
- 4.1Javap命令的使用
- Java消息发布插件
- 浅谈dp 动态规划(2)
- 使用Hystrix守护应用(1)
- 关于架构的优化和设计,架构师必须悟透的事情
- 微服务资料汇总
- google-perftools优化nginx在高并发时的性能
- filter过滤器相关操作
- Ubuntu系统备份和恢复
- uitextfield placeholder color
- 雅思G类大作文
- 雅思小作文
- text简单使用
- 标准的GetDIBits调用方式
- 微商城应该怎样选择?
- 微信公众号如何做情感营销?
- 出售51aspx上的商业源码 贵的我只要1/3价格 便宜的只要半价 QQ联系 847129860
- Session
- AIO 学习
- 为何那么多一线互联网公司做流应用?