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
相关产品推荐
相关产品推荐

