You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Android开发:如何读取startActivityForResult返回结果并展示指定字段?

读取startActivityForResult返回结果的正确姿势

兄弟,我来帮你把这个问题捋明白!你之前踩了个小坑——用finishActivity(1)根本没法返回结果,这个方法是用来结束指定请求码启动的Activity的,不是用来传递返回数据的。想要拿到目标页面的股票名称和最新价格,得按这几步来:

第一步:正确启动目标Activity

首先你得确保启动目标页面时,用带请求码的startActivityForResult,比如:

Intent intent = new Intent(this, 你的目标Activity.class);
startActivityForResult(intent, 1); // 这里的1是请求码,后面接收结果要对应上

第二步:在目标Activity中正确返回数据

当你通过bStock()拿到数据后,别再用finishActivity(1)了!要把需要返回的数据塞进Intent,用setResult()设置结果,再调用finish()关闭页面:

// 假设你已经获取到了股票名称和最新价格
String stockName = "XX科技";
double latestPrice = 67.89;

// 创建Intent存数据
Intent resultIntent = new Intent();
resultIntent.putExtra("stock_name", stockName);
resultIntent.putExtra("latest_price", latestPrice);

// 设置结果码(推荐用系统的RESULT_OK,也可以自定义)
setResult(Activity.RESULT_OK, resultIntent);
// 关闭当前页面,把结果返回给启动它的页面
finish();

第三步:在原Activity中接收并展示结果

回到启动目标页面的原Activity,重写onActivityResult方法,在这里读取返回的数据并展示:

@Override
protected void onActivityResult(int requestCode, int resultCode, @Nullable Intent data) {
    super.onActivityResult(requestCode, resultCode, data);
    // 先校验请求码、结果码,确保数据不为空
    if (requestCode == 1 && resultCode == Activity.RESULT_OK && data != null) {
        // 取出传递的参数
        String name = data.getStringExtra("stock_name");
        double price = data.getDoubleExtra("latest_price", 0.0); // 第二个参数是取不到值时的默认值
        
        // 把值展示到你的UI上,比如两个TextView
        tvStockName.setText(name);
        tvLatestPrice.setText(String.format("%.2f", price));
    }
}

额外提醒

如果你的项目用的是AndroidX,startActivityForResult已经被官方废弃了,推荐用ActivityResultContracts.StartActivityForResult来实现,不过核心逻辑还是传递Intent数据、接收解析那一套,只是API写法不同而已。

内容的提问来源于stack exchange,提问作者RBI Master

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.20 12:09:02