android 获取上一个activity返回值的方法

yizhihongxing

当一个Activity启动另一个Activity并希望获取后者返回的值时,可以使用以下方法:

  1. 使用startActivityForResult()方法启动目标Activity:
Intent intent = new Intent(this, TargetActivity.class);
startActivityForResult(intent, REQUEST_CODE);

在上述代码中,REQUEST_CODE是一个自定义的整数值,用于标识请求的来源。

  1. 在目标Activity中设置返回结果:
Intent resultIntent = new Intent();
resultIntent.putExtra(\"key\", value);
setResult(Activity.RESULT_OK, resultIntent);
finish();

在上述代码中,\"key\"是一个自定义的字符串,用于标识返回值的键名,value是要返回的值。

  1. 在启动目标Activity的源Activity中,重写onActivityResult()方法来处理返回结果:
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
    super.onActivityResult(requestCode, resultCode, data);
    if (requestCode == REQUEST_CODE && resultCode == Activity.RESULT_OK) {
        if (data != null) {
            String resultValue = data.getStringExtra(\"key\");
            // 处理返回的结果值
        }
    }
}

在上述代码中,我们检查requestCoderesultCode是否与之前设置的值匹配,然后从data中获取返回的值。

示例1:
假设我们有一个名为MainActivity的Activity,它启动一个名为SecondActivity的目标Activity,并希望获取SecondActivity返回的字符串值。

// MainActivity.java
public class MainActivity extends AppCompatActivity {
    private static final int REQUEST_CODE = 1;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        Button button = findViewById(R.id.button);
        button.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                Intent intent = new Intent(MainActivity.this, SecondActivity.class);
                startActivityForResult(intent, REQUEST_CODE);
            }
        });
    }

    @Override
    protected void onActivityResult(int requestCode, int resultCode, Intent data) {
        super.onActivityResult(requestCode, resultCode, data);
        if (requestCode == REQUEST_CODE && resultCode == Activity.RESULT_OK) {
            if (data != null) {
                String resultValue = data.getStringExtra(\"key\");
                // 处理返回的结果值
            }
        }
    }
}
// SecondActivity.java
public class SecondActivity extends AppCompatActivity {
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_second);

        Button button = findViewById(R.id.button);
        button.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                Intent resultIntent = new Intent();
                resultIntent.putExtra(\"key\", \"返回的字符串值\");
                setResult(Activity.RESULT_OK, resultIntent);
                finish();
            }
        });
    }
}

示例2:
假设我们有一个名为MainActivity的Activity,它启动一个名为CalculatorActivity的目标Activity,并希望获取CalculatorActivity返回的计算结果。

// MainActivity.java
public class MainActivity extends AppCompatActivity {
    private static final int REQUEST_CODE = 1;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        Button button = findViewById(R.id.button);
        button.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                Intent intent = new Intent(MainActivity.this, CalculatorActivity.class);
                startActivityForResult(intent, REQUEST_CODE);
            }
        });
    }

    @Override
    protected void onActivityResult(int requestCode, int resultCode, Intent data) {
        super.onActivityResult(requestCode, resultCode, data);
        if (requestCode == REQUEST_CODE && resultCode == Activity.RESULT_OK) {
            if (data != null) {
                int resultValue = data.getIntExtra(\"key\", 0);
                // 处理返回的计算结果
            }
        }
    }
}
// CalculatorActivity.java
public class CalculatorActivity extends AppCompatActivity {
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_calculator);

        Button addButton = findViewById(R.id.add_button);
        addButton.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                int result = 2 + 2; // 假设这里进行了一个计算
                Intent resultIntent = new Intent();
                resultIntent.putExtra(\"key\", result);
                setResult(Activity.RESULT_OK, resultIntent);
                finish();
            }
        });
    }
}

以上是获取上一个Activity返回值的方法的完整攻略,通过重写onActivityResult()方法并使用startActivityForResult()方法来实现。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:android 获取上一个activity返回值的方法 - Python技术站

(0)
上一篇 2023年9月6日
下一篇 2023年9月6日

相关文章

  • IDEA连接远程服务器Docker部署Spring Boot项目的详细教程

    下面是基于IDEA连接远程服务器Docker部署Spring Boot项目的详细攻略: 步骤一:在远程服务器上安装Docker 在远程服务器上安装Docker,可以使用以下命令: sudo apt-get update sudo apt-get install docker.io 安装完成后,可以通过运行 docker -v 命令来检查 Docker 是否已…

    other 2023年6月27日
    00
  • 基于Python函数和变量名解析

    基于Python函数和变量名解析的完整攻略 Python是一种动态类型的编程语言,它允许我们在运行时根据需要创建和修改函数和变量。这种灵活性使得Python函数和变量名解析成为一项重要的特性。在本攻略中,我们将详细讲解Python函数和变量名解析的过程和示例。 函数名解析 在Python中,函数名是一个标识符,用于引用函数对象。函数名解析是指Python解释…

    other 2023年7月29日
    00
  • PHP中trait的使用和同时引入多个trait时同名方法冲突的处理方法

    让我来为你详细讲解一下“PHP中trait的使用和同时引入多个trait时同名方法冲突的处理方法”的完整攻略。 1. 什么是trait Trait是PHP5.4.0版本引入的新特性,它的作用是为了解决单继承问题。trait可以在不破坏类继承关系的情况下,为一个类添加一些方法和属性。trait类似于类,但它不能被实例化,也不能独立存在,它只能被其他类所包含使用…

    other 2023年6月26日
    00
  • Vue.js 递归组件实现树形菜单(实例分享)

    介绍:Vue.js是一个开源JavaScript框架,用于构建用户界面。它的易于上手、快速、灵活等特点在前端开发中受到了广泛的认可。Vue支持响应式和组件化的应用程序开发,并且非常适合开发动态单页应用程序(SPA)。 在Vue.js中,递归组件是一种非常实用的技术,可以在树形结构等数据可视化场景下提供非常高效、易于扩展的数据绑定方法。这篇文章将详细介绍如何使…

    other 2023年6月27日
    00
  • AutoCAD 2019已经发布了 AutoCAD 2019下载地址及新功能介绍(附序列号)

    AutoCAD 2019发布攻略 1. AutoCAD 2019简介 AutoCAD 2019是一款功能强大的计算机辅助设计(CAD)软件,它提供了广泛的设计工具和功能,用于创建和编辑2D和3D模型。AutoCAD 2019具有许多新功能和改进,使其成为设计师和工程师的首选工具。 2. AutoCAD 2019新功能介绍 以下是AutoCAD 2019的一些…

    other 2023年8月4日
    00
  • .net框架简单介绍

    以下是关于“.NET框架简单介绍”的完整攻略,包括基本概念、组成部分、特点和示例。 基本概念 .NET框架是由微软公司开发的一种应用程序框架,用于开发和运行Windows操作系统上的应用程序。它提供了一种统一的编程模型,使开发人员可以使用多种编程语言(如C#、VB.NET等)开发应用程序。 组成部分 .NET框架由以下组成部分组成: 公共语言运行时(CLR)…

    other 2023年5月7日
    00
  • Android嵌套滚动与协调滚动的实现方式汇总

    Android嵌套滚动与协调滚动的实现方式汇总 在Android开发中,嵌套滚动和协调滚动是常见的需求。嵌套滚动指的是在一个滚动容器中,包含了另一个滚动容器,而协调滚动则是指两个或多个滚动容器之间的滚动行为相互关联。本文将详细介绍Android中实现嵌套滚动和协调滚动的几种方式,并提供两个示例说明。 1. 使用NestedScrollView和Recycle…

    other 2023年7月28日
    00
  • esxi6.5从载到安装

    esxi6.5从载到安装 ESXi是一款主流的虚拟化操作系统,采用Bare Metal架构,相对于传统的虚拟化解决方案来说有着更加出色的性能和稳定性,而且支持的硬件范围很广泛。 本篇文章将会介绍如何将ESXi 6.5从载到安装过程。 准备工作 在进行ESXi 6.5从载到安装的过程中,我们需要做一些准备工作,包括: 身份验证 在VMware网站上注册并获取E…

    其他 2023年3月29日
    00
合作推广
合作推广
分享本页
返回顶部