startActivityForResult用法
来源:互联网 发布:ncut算法优劣 编辑:程序博客网 时间:2024/05/21 15:46
startActivityForResult用法详解
当前Activity(A界面)要打开另一个Activity(B界面)并传递值,然后关闭(B界面)返回到当前Activity(A界面)并传值,这样的需求需要用到是startActivityForResult打开方式
当前aActivity(A界面)代码
public static final int REQUESTCODE = 0;model为在aActivity中需要传的值
@Overridepublic void onClick(View v) { switch (v.getId()) { case R.id.activity_form_save: editAction(); break; }}此为打开bActivity代码private void editAction() {
Intent intent = new Intent(this, bActivity.class);
intent.putExtra("model", model);
startActivityForResult(intent, REQUESTCODE);}
PS:当前aActivity必须要重写onActivityResult方法来对将来的bActivity关闭并返回值做出回应。
requestCode 请求码,即调用startActivityForResult()传递过去的值
resultCode 结果码,结果码用于标识返回数据来自哪个新Activity
@Overrideprotected void onActivityResult(int requestCode, int resultCode, Intent data) { super.onActivityResult(requestCode, resultCode, data); if (resultCode == RESULT_OK) { switch (requestCode) { case REQUESTCODE: model = data.getSerializableExtra("model"); initData(); adapter.notifyDataSetChanged();比如这类操作,这是我需要的,因情况而定 break; } }}
bActivity(B界面)代码
modelb为bActivity中的值
Button btnClose=(Button)findViewById(R.id.btnClose);btnClose.setOnClickListener(new View.OnClickListener(){ public void onClick(View v) { //数据是使用Intent返回 Intent data = new Intent(); //把返回数据存入Intent data.putExtra("result", modelb); //设置返回数据 bActivity.this.setResult(RESULT_OK, data); //关闭Activity bActivity.this.finish(); }});
请求码的作用 使用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); } });@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的返回数据 } }}
以上内容希望对大家有所帮助
1 0
- startActivityForResult 用法
- startActivityForResult 用法
- startActivityForResult用法
- startActivityForResult 用法
- startActivityForResult 用法
- startActivityForResult 用法
- startActivityForResult用法
- startActivityForResult用法
- startActivityForResult()用法
- startActivityForResult用法
- startActivityForResult用法
- startActivityForResult用法
- startActivityForResult用法
- startActivityForResult用法
- startActivityForResult()用法
- startactivityforresult用法
- startActivityForResult用法
- startActivityForResult的用法
- Python学习笔记 --- ImportError: No module named sqlalchemy
- 关于使用echarts.js插件写的一个折线图demo
- 利用Tcp通信模式实现登陆验证(单线程)
- U-Boot常用命令和常用环境变量
- 希尔排序详解
- startActivityForResult用法
- android ListView异步加载图片,完美实现图文混排
- 串口异步收发的实现
- easyui form表单.serialize()序列化后中文乱码问题原因及解决
- codeforces AIM Tech Round 3 (Div. 2) (A~D)
- 修改tomcat的conf/server.xml解决网页乱码
- Android--加载大分辨率图片到内存
- spring+strust2+mybatis框架下的导出功能的实现
- java反射的基本使用