(一)who
简介:没错,就是startActivityForResult()方法,这个方法用来在活动被销毁的时候返回数据给上一个方法。
参数说明:
startActivityForResult(intent, 1) 第一个参数是intent,第二个参数是请求码,用于判断数据的来源。
(二)what
现在有两个activity,activityA和activityB,activityA想activityB发送请求,让actiivtyB返回数据。
代码如下:

public class ActivityA extends AppCompatActivity {
private Button sendBtn;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_a);
sendBtn = findViewById(R.id.send_btn);
sendBtn.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
Intent intent = new Intent(ActivityA.this, ActivityB.class);
//第一个参数是intent,第二个参数是请求码,随便定义,保证是唯一的就行
startActivityForResult(intent, 1);
}
});
} @Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
super.onActivityResult(requestCode, resultCode, data);
//这里要通过请求码来判断数据的来源
switch (requestCode) {
case 1:
//判断请求的结果是否成功,resultCode == RESULT_OK,代表成功了
if (resultCode == RESULT_OK) {
String getData = data.getStringExtra("data");
Toast.makeText(ActivityA.this, getData, Toast.LENGTH_LONG).show();
}
break;
/**这里可以有多个requestcode**/
default:
}
}
}

下面是activityB

public class ActivityB extends AppCompatActivity{
private Button returnData;
@Override
protected void onCreate(@Nullable Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_b);
returnData = findViewById(R.id.return_data);
returnData.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
Intent intent = new Intent();
//将要传给activityA的数据存放在intent中
intent.putExtra("data", "你好,time");
//第一个参数用于向上一个活动返回结果,一般有RESULT_OK和RESULT_CANCEL两个值,第二个参数把带有数据的intent传回去
setResult(RESULT_OK, intent);
finish();
}
});
}
}

注意:当用户点back键的时候,数据并没有回传回去,这时候就要重写onBackPressed()方法了

@Override
public void onBackPressed() {
Intent intent = new Intent();
intent.putExtra("data", "你好,time");
setResult(RESULT_OK, intent);
finish();
}

最新文章

  1. IBM Z上邮件服务器的配置相关内容
  2. UI控件(UIToolbar)
  3. pickle 序列化反序列化
  4. 移植milo的全局光照渲染器代码
  5. 每天一个linux命令(40):wc命令
  6. STM32 DMA USART ADC
  7. 直播CDN架构随想
  8. Android主线程不能访问网络异常解决办法
  9. 学习笔记——Maven实战(十)Maven 3,是时候升级了
  10. Android之自定义控件入门
  11. iOS 网络编程:socket
  12. 无法关闭的QT程序(覆盖closeEvent,新建QProcess并脱离关系)
  13. BZOJ 2661 连连看
  14. boost------signals2的使用1(Boost程序库完全开发指南)读书笔记
  15. web代理进行跨域访问
  16. 从并发处理谈PHP进程间通信(一)外部介质
  17. C++ Primer高速入门之三:几种常见的控制语句
  18. 【转载】VMware虚拟机NAT模式网络配置图文教程
  19. 问题 Duplicate entry '0' for key 'PRIMARY'
  20. C语言初学

热门文章

  1. ASP.NET Core中的依赖注入: 构造函数的选择与服务生命周期管理
  2. Java web入门之Http请求和响应
  3. Linux如何查看进程是否存活
  4. 基于oracle 的PL/SQL编程 -变量使用
  5. IOC(控制反转)和DI(依赖注入)
  6. JS中正则表达式
  7. 【Java】定义Logger为什么要用static和final?
  8. txt操作
  9. 基于SSM的RBAC权限系统(1)-利用ajax,bootstrap,ztree完成权限树功能
  10. tomcat正常启动输入localhost:8080显示404错误