返回

Android初级入门:使用startActivityForResult从子Activity返回数据

Android

使用 startActivityForResult() 从子 Activity 中返回数据

简介

在 Android 开发中,Activity 是应用程序的基础构建模块。当您需要在活动之间导航时,您可以使用 startActivity() 方法。但是,如果您需要从子活动返回数据到父活动,则需要使用 startActivityForResult() 方法。

理解 startActivityForResult()

startActivityForResult() 方法与 startActivity() 方法类似,但它提供了一种机制,允许子活动将数据返回给父活动。该方法采用两个参数:

  • intent: 包含要启动子活动所需信息的 Intent 对象。
  • requestCode: 一个整数请求代码,用于标识子活动。

获取返回数据

要从子活动获取返回数据,父活动需要覆盖 onActivityResult() 方法。该方法将接收一个包含以下信息的 Intent 对象:

  • resultCode: 一个整数结果代码,表示子活动的操作结果。
  • data: 一个 Intent 对象,可能包含子活动返回的数据。

示例代码

为了演示如何使用 startActivityForResult(),我们创建一个示例应用程序,其中父活动启动一个子活动以获取用户输入。

父活动 (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);

        // 启动子活动
        Intent intent = new Intent(this, ChildActivity.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 == RESULT_OK) {
            // 获取子活动返回的数据
            String result = data.getStringExtra("result");

            // 处理返回的数据
            // ...
        }
    }
}

子活动 (ChildActivity.java)

public class ChildActivity extends AppCompatActivity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_child);

        // 获取父活动传递的数据
        // ...

        // 处理数据并返回结果
        Intent intent = new Intent();
        intent.putExtra("result", "返回结果");
        setResult(RESULT_OK, intent);

        // 结束子活动
        finish();
    }
}

结论

使用 startActivityForResult() 方法从子活动返回数据是一种在 Android 应用程序中传递数据和控制流的强大技术。通过遵循本文中概述的步骤,您将能够轻松掌握此技术并将其应用到自己的项目中。

常见问题解答

  • 什么时候应该使用 startActivityForResult()?

    • 当您需要从子活动返回数据到父活动时,应使用 startActivityForResult()。
  • 如何标识子活动?

    • 您可以使用请求代码来标识子活动。
  • 如何从子活动返回数据?

    • 您可以在子活动中使用 setResult() 方法返回数据。
  • 如何在父活动中获取返回数据?

    • 您可以覆盖 onActivityResult() 方法来获取子活动返回的数据。
  • 如何处理返回结果?

    • 您可以在父活动中处理返回结果,例如显示数据或更新 UI。