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日

相关文章

  • 关于css:如何拉伸背景图片以填充div

    在CSS中,我们可以使用background-size属性或background属性来拉伸背景图片以填充整个div。以下是两种方法的详细说明: 方法1:background-size属性 我们可以使用background-size属性背景图片的大小设置为“cover”,这将使背景图片拉伸以填充整个div。以下是一个示例: <div class=&quo…

    other 2023年5月9日
    00
  • 新接手的网站该怎么有效的做优化和优化分析?

    新接手的网站优化攻略 1. 网站优化分析 在开始优化之前,首先需要对网站进行全面的分析,以了解当前的状况和存在的问题。以下是一些常见的网站优化分析步骤: a. 网站性能分析 使用工具如Google PageSpeed Insights或GTmetrix来评估网站的加载速度和性能。 检查服务器响应时间、页面大小、图片压缩等因素,以确定是否存在性能瓶颈。 b. …

    other 2023年9月6日
    00
  • 如何添加chrome迅雷扩展程序添加chrome迅雷扩展程序的方法

    如何添加Chrome迅雷扩展程序 Chrome迅雷扩展程序可以帮助用户更方便地使用迅雷下载和快传等功能。本攻略将详细讲如何添加Chrome迅雷扩展程序的方法,包括打开Chrome网上用店、搜索迅雷扩展程序、添加至Chrome等步骤。 添加Chrome迅雷扩展程序的方法 以下是添加Chrome迅雷扩展程序的方法: 打开Chrome浏览器,点击右上角的三个点,选…

    other 2023年5月7日
    00
  • 实例讲解避免javascript冲突的方法

    实例讲解避免 JavaScript 冲突的方法 在开发网页时,经常会遇到多个 JavaScript 库或框架同时使用的情况,这可能导致命名冲突和功能冲突。为了避免这些冲突,我们可以采取一些方法来确保 JavaScript 代码能够正确地运行。下面是两种常见的方法示例: 1. 使用命名空间 命名空间是一种将变量和函数封装在一个对象中的技术,以避免全局命名冲突。…

    other 2023年7月29日
    00
  • 网易云音乐 for mac版下载 网易云音乐mac版官方下载地址

    网易云音乐 for Mac版下载攻略 网易云音乐是一款非常受欢迎的音乐播放器,它提供了丰富的音乐资源和个性化推荐功能。如果你是Mac用户,下面是网易云音乐Mac版的下载攻略。 步骤一:访问官方网站 首先,你需要访问网易云音乐的官方网站。你可以在浏览器中输入网址 https://music.163.com/,然后按下回车键。 步骤二:进入下载页面 在网易云音乐…

    other 2023年8月4日
    00
  • mybatis中文网

    当然,我很乐意为您提供有关“MyBatis中文网”的完整攻略。以下是详细的步骤和两个示例: 1 MyBatis中文网 MyBatis中文网是一个提供MyBatis框架学习资源的网站,包括文档、示例、教程、API等。以下是使用MyBatis中文网的步骤: 1.1 访问MyBatis中文网 首先,您需要访问MyBatis中文网。您可以在浏览器中输入“https:…

    other 2023年5月6日
    00
  • nginx全局配置和性能优化

    Nginx全局配置和性能优化 Nginx是一款高性能的Web服务器和反向代理服务器,已经成为目前互联网中使用最为广泛的Web服务器之一。为了提高Nginx的性能,我们需要进行全局配置和性能优化。 全局配置 我们可以在Nginx配置文件的全局区域中设置一些全局配置选项,这样可以减少在每个虚拟主机中都进行相同配置的麻烦。以下是几个常用的全局配置选项: worke…

    其他 2023年3月28日
    00
  • 详谈构造函数加括号与不加括号的区别

    构造函数是一种特殊的函数,用于创建和初始化对象。在JavaScript中,我们可以使用函数或类作为构造函数来创建新的对象。在使用构造函数时,有时会看到在构造函数名称后加上括号,也有时不加,这究竟有什么差别呢?下面我们来详细讲解。 构造函数加括号与不加括号的区别 构造函数加括号的用法 当构造函数名称后面加上括号时,相当于在使用该构造函数来创建新的对象。例如: …

    other 2023年6月26日
    00
合作推广
合作推广
分享本页
返回顶部