android requestCode和resultCode
2015-01-04 20:45
232 查看
之前学的时候没太弄懂,今天突然想到这个问题,就重新复习一下。
总结:requestCode是用来标识请求的来源
resultCode是用来标识返回的数据来自哪一个activity
请求码的作用
使用
例如:一个Activity有两个按钮,点击这两个按钮都会打开同一个Activity,不管是那个按钮打开新Activity,当这个新Activity关闭后,系统都会调用前面Activity的
结果码的作用
在一个Activity中,可能会使用startActivityForResult()方法打开多个不同的Activity处理不同的业务,当这些新Activity关闭后,系统都会调用前面Activity的onActivityResult(int requestCode, int resultCode, Intent data)方法。为了知道返回的数据来自于哪个新Activity,在onActivityResult()方法中可以这样做(ResultActivity和NewActivity为要打开的新Activity):
参考:
http://www.dewen.io/q/8896
总结:requestCode是用来标识请求的来源
resultCode是用来标识返回的数据来自哪一个activity
请求码的作用
使用
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的返回数据 } } }
参考:
http://www.dewen.io/q/8896
相关文章推荐
- android使用startActivityForResult时,requestCode和resultCode的作用
- Android中 requestCode与resultCode的区别与用法
- android开发_Intent_requestCode_resultCode页面之间的跳转
- Android startActivityForResult(intent, requestCode)的用法。
- Android Pitfall - Fragment.startActivityForResult(), requestCode == 65536
- requestCode与resultCode不等以及编程中遇到的其它问题
- 详细解释下多个Activity之间 startActivityForResult 时,requestCode 和 resultCode 的传递和用法
- [Android]startActivityForResult启动singleTask的Activity,则onActivitResult()立即回调且resultCode为RESULT_CANCEL
- requestCode 和 resultCode
- android小知识之fragment中调用startActivityForResult(Intent intent,int requestcode)所遇到的问题
- android中onActivityResult方法无法获取返回的resultCode和data问题
- Android startActivityForResult(intent, requestCode)的用法。
- requestCode 和 resultCode 的区别
- Android startActivityForResult(intent, requestCode)的用法。
- 解决android有些机型截图返回 resultCode = 0的问题
- activity的启动方式 requestCode和resultCode的区别
- android resultCode 一直为0问题解决
- requestCode 和 resultCode
- android startActivityForResult(Intent intent, int requestCode) 整理与总结! .
- android startActivityForResult(Intent intent, int requestCode)用法