当前位置: 首页 > news >正文

Android中使用startActivityForResult启动活动

Android中使用startActivityForResult启动活动

大家好,我是免费搭建查券返利机器人省钱赚佣金就用微赚淘客系统3.0的小编,也是冬天不穿秋裤,天冷也要风度的程序猿!在本文中,我们将深入探讨Android开发中使用startActivityForResult方法启动活动的使用方法及其应用场景。

什么是startActivityForResult?

在Android开发中,startActivityForResult方法用于启动一个新的活动(Activity)并期望在该活动完成后返回结果数据给调用方。这种方式通常用于处理需要从子活动获取结果的情况,比如用户选择文件、拍照、选择日期等交互动作。

使用startActivityForResult的基本步骤
  1. 调用startActivityForResult方法启动活动

    在调用方活动中,通过调用startActivityForResult方法启动目标活动,并传递一个请求码(requestCode),用于标识这次启动请求。

    Intent intent = new Intent(this, TargetActivity.class);
    int requestCode = 1; // 任意定义的请求码
    startActivityForResult(intent, requestCode);
    
  2. 在目标活动中设置结果并返回

    在目标活动中完成用户交互或其他操作后,通过setResult方法设置结果代码(resultCode)和可选的结果数据(Intent),然后调用finish方法关闭目标活动并返回结果给调用方。

    Intent resultIntent = new Intent();
    int resultCode = RESULT_OK; // 可以是任意的结果码,表示操作成功
    resultIntent.putExtra("key", resultData); // 将结果数据放入Intent中
    setResult(resultCode, resultIntent);
    finish(); // 关闭当前活动返回调用方
    
  3. 在调用方活动中处理返回结果

    在调用方活动中重写onActivityResult方法,该方法会在目标活动调用setResult并关闭后被调用,可以在该方法中获取返回的结果数据并进行处理。

    @Override
    protected void onActivityResult(int requestCode, int resultCode, @Nullable Intent data) {super.onActivityResult(requestCode, resultCode, data);if (requestCode == 1) { // 根据请求码判断是哪个请求的返回结果if (resultCode == RESULT_OK) { // 判断返回结果是否成功if (data != null) {// 处理返回的结果数据String result = data.getStringExtra("key");// 进行进一步的处理}} else if (resultCode == RESULT_CANCELED) {// 处理取消操作的情况}}
    }
    
示例代码

下面我们通过一个示例来演示如何使用startActivityForResult方法:

package cn.juwatech.example;import android.content.Intent;
import android.os.Bundle;
import androidx.appcompat.app.AppCompatActivity;public class MainActivity extends AppCompatActivity {@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);// 启动目标活动Intent intent = new Intent(this, TargetActivity.class);int requestCode = 1;startActivityForResult(intent, requestCode);}@Overrideprotected void onActivityResult(int requestCode, int resultCode, Intent data) {super.onActivityResult(requestCode, resultCode, data);if (requestCode == 1) {if (resultCode == RESULT_OK) {if (data != null) {// 处理返回的结果数据String result = data.getStringExtra("key");// 进行进一步的处理}} else if (resultCode == RESULT_CANCELED) {// 处理取消操作的情况}}}
}

在目标活动TargetActivity中,需要设置返回的结果数据:

package cn.juwatech.example;import android.content.Intent;
import android.os.Bundle;
import androidx.appcompat.app.AppCompatActivity;public class TargetActivity extends AppCompatActivity {@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_target);// 处理一些操作后返回结果Intent resultIntent = new Intent();String resultData = "这是返回的数据";resultIntent.putExtra("key", resultData);setResult(RESULT_OK, resultIntent);finish(); // 返回到调用方活动}
}
注意事项
  • 确保在调用方活动中注册了目标活动(TargetActivity)的声明。
  • 调用方活动和目标活动之间传递数据需要注意数据类型的匹配和处理。
  • 在目标活动中,设置结果并调用finish方法后,会触发调用方活动的onActivityResult方法。

通过以上步骤和示例,我们可以在Android开发中灵活运用startActivityForResult方法来处理需要返回结果的交互场景,从而实现更加灵活和交互性强的应用程序设计。传递。

http://www.lryc.cn/news/385773.html

相关文章:

  • NineData和华为云在一起!提供一站式智能数据库DevOps平台
  • 深入解析 Redisson分布式锁看门狗机制
  • Apache Arrow 和数据的未来:开放标准推动人工智能发展
  • Vue项目生产环境的打包优化
  • oracle数据库之使用Java程序调用存储过程(二十四)
  • 西电953总分第一、专业课第一考研上岸
  • pytorch-模型训练
  • Linux /proc目录总结
  • 【JavaEE】浅谈线程(二)
  • 爬虫:爬取知乎热榜一级评论及回答2024不包含翻页
  • AI 编程探索- iOS动态标签控件
  • 计算机网络——数据链路层(数据链路层概述及基本问题)
  • 【前端】前端权限管理的实现方式:基于Vue项目的详细指南
  • MySQL数据库基础练习系列——教务管理系统
  • windowns server2016服务器配置php调用powerpoint COM组件
  • Git之checkout/reset --hard/clean -f区别(四十二)
  • MySQL数据库基础练习系列:科研项目管理系统
  • 算法设计与分析--考试真题
  • 【鸿蒙学习笔记】页面和自定义组件生命周期
  • ASPICE与ISO 21434:汽车软件与网络安全标准的协同与互补
  • 视频格式转换方法:如何使用视频转换器软件转换视频
  • vim操作小诀窍:快速多行添加注释
  • 无线麦克风领夹哪个牌子好,2024年领夹麦克风品牌排行榜推荐
  • Mybatis入门——语法详解:基础使用、增删改查、起别名、解决问题、注释、动态查询,从入门到进阶
  • 仓库选址问题【数学规划的应用(含代码)】阿里达院MindOpt
  • Docker Compose 一键快速部署 RocketMQ
  • Vscode lanuch.json
  • Golang开发:构建支持并发的网络爬虫
  • 2024年跨境电商关键数据统计:市场规模将达到1.976万亿美元
  • 联想至像M3070DNA打印机加粉及清零方法