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

当一个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日

相关文章

  • Android软键盘遮挡的四种完美解决方案

    Android软键盘遮挡的四种完美解决方案 在Android应用开发中,经常会遇到软键盘遮挡输入框的问题。如果不加以解决,会严重影响用户体验,因此需要寻找一种完美的解决方案。本文将介绍android软键盘遮挡的四种完美解决方案。 解决方案一:android:windowSoftInputMode属性 在AndroidManifest.xml文件中,在acti…

    other 2023年6月26日
    00
  • vivo X6怎么开启开发者模式?开发者模式开启方法

    下面我会详细讲解“vivo X6怎么开启开发者模式?开发者模式开启方法”的完整攻略,过程中会包含两条示例说明。 一、什么是“开发者模式” “开发者模式”是一个Android系统中的隐藏功能,用于给开发者提供更多的操作权限。通过开启“开发者模式”,用户可以在手机上进行更多的高级设置和调试控制,如USB调试、界面的布局绘制等。 二、如何开启“开发者模式” 以下是…

    other 2023年6月26日
    00
  • R语言关于变量的知识点总结

    R语言关于变量的知识点总结 1. 变量的定义和赋值 在R语言中,可以使用赋值操作符<-或=来定义和赋值变量。变量名可以包含字母、数字和点号,但不能以数字开头。 示例: # 定义并赋值一个整数变量 x <- 10 # 定义并赋值一个字符变量 name <- \"John Doe\" 2. 变量的数据类型 R语言中的变量可以…

    other 2023年8月8日
    00
  • Linux find常用用法示例

    Linux find常用用法示例 find命令是Linux中常用的一种查找文件的命令,可以通过文件名、文件类型、文件大小、用户和组等多种方式来查找文件。接下来将介绍find命令的常用用法,以及一些具体的例子。 命令格式 find命令的基本格式为: find [起始目录] [参数] [匹配表达式] 其中,起始目录表示查找的起始路径,如果不指定则默认从当前目录开…

    其他 2023年3月28日
    00
  • 关于python:以全精度打印numpy.float64

    在Python中,使用numpy.float64类型的变量时,有时需要以全精度打印它们的值。以下是以全精度打印numpy.float64的完整攻略: 导入numpy模块 在使用numpy.float64之前,需要先导入numpy模块。可以使用以下命令导入numpy模块: import numpy as np 设置打印选项 在打印numpy.float64变量…

    other 2023年5月8日
    00
  • 安装mysq 5.7.20 解压版遇到的坑(推荐)

    下面是关于安装MySQL 5.7.20 解压版所遇到的坑以及解决方案的完整攻略: 1. 下载与解压 首先,我们需要先从MySQL官网下载MySQL 5.7.20的压缩包版本,具体网址为:https://dev.mysql.com/downloads/mysql/5.7.html。选择“MySQL Community Server”后,可以根据操作系统进行选择…

    other 2023年6月27日
    00
  • autohotkey检测窗体控件的两种方法

    Autohotkey是一个强大的自动化脚本语言,常用于Windows操作系统环境下自动化任务和对软件快捷键映射。在编写Autohotkey脚本时,我们需要检测窗体控件来更好地控制和操作程序。下面是自动检测窗体控件的两种方法。 方法一:使用Window Spy Window Spy是Autohotkey自带的一个工具,它允许我们查看当前窗口句柄和窗体控件的具体…

    other 2023年6月27日
    00
  • 通过本地安全策略中的应用程序控制策略限制软件运行

    通过本地安全策略中的应用程序控制策略是一种常见的限制软件运行的方法,可以避免不良程序对系统造成的潜在威胁。下面是具体的攻略步骤: 打开本地安全策略。 可以通过以下步骤打开本地安全策略: 在Windows运行框中输入“secpol.msc”,打开“本地安全策略”。 或者在“控制面板” → “管理工具” → “本地安全策略” 中打开。 设置应用程序控制策略。 在…

    other 2023年6月25日
    00