Android之startActivityForResult(笔记)
来源:互联网 发布:淘宝店怎么上传标志 编辑:程序博客网 时间:2024/04/28 20:53
之前在做Face++人脸识别年龄的时候,里面用到了startActivityForResult,这是我第一次看到这东西,后来也同样的在iMooc上看到了这个的基础讲解,才知道这个东西是有返回结果的跳转。原来我们的startActivity( )是属于无返回结果的跳转。
我目前也只会这种基本的用法
FirstActivity:
Intent intent = new Intent(MainActivity.this , SecondActivity.class);startActivityForResult(intent , 1); //1是requestCode
这里用到了startActivityForResult (Intent intent, int requestCode)
参考文档里写的是:
public void startActivityForResult (Intent intent, int requestCode)
Same as calling startActivityForResult(Intent, int, Bundle) with no options.
Parameters
intent : The intent to start.
requestCode : If >= 0, this code will be returned in onActivityResult() when the activity exits.
所以第一个就是我们的Intent,第二个是我们的请求码,用于区分是哪个控件进行这个行为,所以多个控件做同个行为的话,就要写不同的requestCode。
然后要重写
protected void onActivityResult(int requestCode, int resultCode, Intent data) 方法
同样的参考文档里这样写:
Called when an activity you launched exits, giving you the requestCode you started it with, the resultCode it returned, and any additional data from it. The resultCode will be RESULT_CANCELED if the activity explicitly returned that, didn’t return any result, or crashed during its operation.
You will receive this call immediately before onResume() when your activity is re-starting.
Parameters
requestCode : The integer request code originally supplied to startActivityForResult(), allowing you to identify who this result came from.
resultCode : The integer result code returned by the child activity through its setResult().
data : An Intent, which can return result data to the caller (various data can be attached to Intent “extras”).
所以它应该是说这个方法开始起作用的时候,就是我们当前的这第一个Activity处于onResume()之前,也就是当我们一般新打开第二个Activity的时候,第一个Activity会处于onPause()状态,从第二个回到第一个的时候,第一个Activity就会启用onResume()状态。
另外一个就是resultCode是我们的第二个Activity通过setResult()得来的。我觉得应该就这两点是我目前要注意的吧。
SecondActivity:
private String context = "哈哈哈";bt.setOnClickListener(new View.OnClickListener() { @Overridepublic void onClick(View v) { Intent data = new Intent(); data.putExtra("context" , context); setResult(2 , data); //2就是resultCode finish(); }});
回到FirstActivity,之前说要重写onActivityResult():
@Override protected void onActivityResult(int requestCode, int resultCode, Intent data) { super.onActivityResult(requestCode, resultCode, data); if(requestCode == 1 && resultCode == 2) { String context = data.getStringExtra("context"); tv.setText(context); }}
That is it.
参考:慕课网:Android中攻城狮的第二门课
- Android之startActivityForResult(笔记)
- Android之startActivityForResult(笔记)
- Android应用开发学习笔记之startActivityForResult
- Android 边用边学 之 startActivityForResult
- android开发之StartActivityForResult
- Android 之 startActivityForResult
- android之startActivityForResult
- 安卓笔记之StartActivityForResult
- Android中StartActivityForResult()
- Android之startActivity()和startActivityForResult()
- mono for Android 之StartActivityForResult
- android之startActivityForResult的使用
- Android之startActivityForResult的使用
- android之startActivityForResult的使用
- Android基础之startActivityForResult详解
- Android开发之Activity startActivityForResult()方法详解
- Android笔记——startActivityForResult使用
- Android 开发笔记 第二季 startActivityForResult
- MySQL学习笔记之约束条件
- win7 64位配置mysql 5.6免安装版
- 颜色空间总结
- C++Primer第五版 练习10.32解答
- Android-Bootstrap
- Android之startActivityForResult(笔记)
- C++声明和定义的区别
- C#打印螺旋数组
- Java泛型详解二
- 如何通过iTunes安装ipa测试包
- eclipse的debug的单点调试
- php 数组去重
- Mapper映射
- 临时表空间过大,重建临时表空间