startactivityforresult

startactivityforresult的用途是什么

小樊
82
2024-09-02 19:49:12
栏目: 编程语言

startActivityForResult是Android开发中用于启动另一个Activity并期望从该Activity获取返回结果的方法。其主要用途和用法如下:

主要用途

基本用法

  1. 启动Activity并等待返回结果
Intent intent = new Intent(this, TargetActivity.class);
startActivityForResult(intent, REQUEST_CODE);
  1. 处理返回结果
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
    super.onActivityResult(requestCode, resultCode, data);
    if (requestCode == REQUEST_CODE && resultCode == Activity.RESULT_OK) {
        // 处理返回的数据
    }
}
  1. 在被启动的Activity中返回结果
Intent intent = this.getIntent();
String result = intent.getStringExtra("result");
setResult(Activity.RESULT_OK, intent);
finish();

示例

假设我们有两个Activity:MainActivitySecondActivity。在MainActivity中,用户可以点击一个按钮来启动SecondActivity。在SecondActivity中,用户可以输入一些数据,然后点击一个按钮返回结果到MainActivity

  1. 在MainActivity中启动SecondActivity
Intent intent = new Intent(MainActivity.this, SecondActivity.class);
startActivityForResult(intent, REQUEST_CODE);
  1. 在SecondActivity中处理数据并返回结果
Intent intent = this.getIntent();
String input = intent.getStringExtra("input");
String result = processData(input); // 假设这是处理数据的方法
intent.putExtra("result", result);
setResult(Activity.RESULT_OK, intent);
finish();
  1. 在MainActivity中接收并处理返回的结果
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
    super.onActivityResult(requestCode, resultCode, data);
    if (requestCode == REQUEST_CODE && resultCode == Activity.RESULT_OK) {
        String result = data.getStringExtra("result");
        // 处理返回的数据
    }
}

通过这种方式,startActivityForResult允许Activity之间进行数据交换和结果传递,从而实现更丰富的应用交互。

0
看了该问题的人还看了