startActivityForResult()和startActivity()有何区别
时间: 2024-01-09 22:19:49 浏览: 80
startActivity()和startActivityForResult()都是用于启动一个新的Activity的方法,但它们之间有一些区别。
startActivity()方法只是简单地启动一个新的Activity,而不会返回任何结果。如果你想要从新的Activity中返回数据给原始Activity,你需要使用startActivityForResult()方法。当你使用startActivityForResult()方法启动一个新的Activity时,你可以在新的Activity中设置结果代码,然后在新的Activity中调用finish()方法来关闭它并返回结果给原始Activity。此时,原始Activity的onActivityResult()方法将被调用,你可以在这个方法中处理返回的结果。
因此,startActivity()方法适用于不需要返回结果的简单Activity跳转,而startActivityForResult()方法适用于需要从新的Activity中返回结果的情况。
相关问题
startActivityForResult和startActivity的区别
startActivity和startActivityForResult是Android开发中常用的两个方法,它们的区别如下[^1]:
1. startActivity( ):这个方法用于启动另一个Activity,它不会自动返回到原来的Activity。如果需要返回到原来的页面,必须再次使用startActivity( )来启动原来的Activity。
2. startActivityForResult( ):这个方法也用于启动另一个Activity,但它可以在启动的Activity结束后返回结果给原来的Activity。在启动Activity时,可以传递一个请求码(requestCode),当启动的Activity结束后,可以通过onActivityResult( )方法获取返回的结果。
下面是一个示例代码,演示了startActivity和startActivityForResult的使用:
```java
// 启动另一个Activity
Intent intent = new Intent(MainActivity.this, SecondActivity.class);
startActivity(intent);
// 启动另一个Activity并获取返回结果
Intent intent = new Intent(MainActivity.this, SecondActivity.class);
startActivityForResult(intent, REQUEST_CODE);
// 在启动的Activity中设置返回结果
Intent intent = new Intent();
intent.putExtra("result", "Hello World");
setResult(RESULT_OK, intent);
finish();
// 在原来的Activity中获取返回结果
@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");
// 处理返回结果
}
}
```
使用startActivityForResult方法进行跳转相比使用startActivity方法有什么优势呢?
使用startActivityForResult方法进行跳转相比使用startActivity方法的优势在于可以获取被跳转页面的返回结果。当使用startActivityForResult方法进行跳转时,被跳转页面可以通过setResult方法设置返回结果,而跳转页面可以通过onActivityResult方法获取返回结果。这种方式适用于需要从被跳转页面获取数据的场景,例如在从相册中选择照片后返回照片数据。
阅读全文