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实现自定义加载框的代码示例” 的完整攻略。 1. 材料准备 在进行自定义加载框的实现之前,需要准备以下材料: 一台安装有Android开发环境的电脑 一台安装有Android Studio的电脑 一个空的Android工程 2. 实现过程 2.1 自定义视图 首先,我们需要先定义一个继承自View的自定义视图。 class …

    other 2023年6月25日
    00
  • Android 自定义布局竖向的ViewPager的实现

    Android 自定义布局竖向的 ViewPager 的实现攻略 在 Android 中,ViewPager 是一个常用的控件,用于实现滑动切换不同页面的功能。然而,默认情况下,ViewPager 是水平滑动的,如果我们想要实现竖向的 ViewPager,就需要进行自定义布局。下面是实现竖向 ViewPager 的完整攻略。 步骤一:创建自定义的竖向 Vie…

    other 2023年9月5日
    00
  • 千兆网络phy芯片rtl8211e的实践应用(自我总结篇)

    千兆网络PHY芯片RTL8211E是一种常用的网络芯片,广泛应用于各种网络设备中。本文将详细讲解RTL8211E的实践应用,包括RTL8211E的特点、使用方法和示例说明。 RTL8211E的特点 RTL8211E是一种高性能的千兆网络PHY芯片,具有以下特点: 支持千兆以太网:RTL8211E支持千兆以太网,可以实现高速数据传输。 支持自适应速度:RTL8…

    other 2023年5月7日
    00
  • js判断主流浏览器类型和版本号的简单实现代码

    当需要在JavaScript中判断主流浏览器类型和版本号时,可以使用navigator.userAgent属性来获取用户代理字符串,然后通过正则表达式匹配来判断浏览器类型和版本号。下面是一个简单的实现代码: // 获取用户代理字符串 var userAgent = navigator.userAgent; // 判断浏览器类型和版本号 if (/Firefo…

    other 2023年8月2日
    00
  • c语言结构体初始化的四种方法

    C语言结构体初始化的四种方法 在C语言中,结构体是一种用户自定义的数据类型,用于表示不同数据类型的集合。当我们定义结构体之后,需要对其进行初始化,以便在使用它之前给成员变量分配具体的值。 本文将介绍C语言结构体初始化的四种方法。 方法一:自动初始化 当我们定义一个结构体之后,如果不指定成员变量的初始值,那么结构体的所有成员变量都会被自动初始化为0或者空指针。…

    其他 2023年3月28日
    00
  • 使用PHP批量生成随机用户名

    下面是使用PHP批量生成随机用户名的完整攻略。 步骤一:生成随机的用户名 我们可以通过PHP内置函数来生成随机的用户名,比如使用uniqid()函数,该函数可以返回一个前缀为当前时间的唯一ID字符串。我们可以将这个ID字符串截取前6位作为我们的随机用户名,代码如下: $username = substr(uniqid(), 0, 6); 步骤二:存储用户名 …

    other 2023年6月27日
    00
  • Process Explorer使用图文教程

    Process Explorer使用图文教程 作为Windows系统中一款进程管理工具,Process Explorer具有更加强大的功能和更加友好的界面,可以满足用户对进程管理、性能监控等多方面的需求。下面将为大家详细介绍如何使用Process Explorer。 下载和安装Process Explorer 首先,我们需要从Microsoft官网上下载Pr…

    其他 2023年3月28日
    00
  • thinkPHP5.0框架URL访问方法详解

    ThinkPHP5.0框架URL访问方法详解 ThinkPHP5.0是一款流行的PHP开发框架,提供了灵活的URL访问方法。本攻略将详细介绍ThinkPHP5.0框架中的URL访问方法,并提供两个示例说明。 基本URL访问方法 ThinkPHP5.0框架中的URL访问方法基于路由规则,可以通过简单的配置实现灵活的URL访问。 1. PATHINFO模式 在P…

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