我相信我们将请求代码作为参数添加,作为识别哪个子活动(从父活动开始)返回结果的一种方式。
但我假设(可能是错误的)在任何时间点,应用程序中只会有一个可用的活动......对吗?
那么为什么我们需要第二个参数呢?
我相信我们将请求代码作为参数添加,作为识别哪个子活动(从父活动开始)返回结果的一种方式。
但我假设(可能是错误的)在任何时间点,应用程序中只会有一个可用的活动......对吗?
那么为什么我们需要第二个参数呢?
当我想关闭许多打开的活动时,我通常使用“startActivityForResult(Intent,Requestcode)”。例子:
startActivityForResult(myIntent,0);
当你调用finish()时,它只会关闭当前活动,你会看到最后打开的活动假设你打开了活动A,你从A打开了B,然后是C,然后是D,假设在互联网连接错误时你必须关闭C和 D 并返回到活动 B。你设置结果:
setResult(100);
并在您要关闭的活动中(例如此处 C)添加:
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
if (resultCode==100){
setResult(100);
finish();
}
};
所以在 IOException 中捕获你只需将结果设置为 100 并完成活动
希望它会帮助你:)
您有一个活动 A。从它您可以使用请求代码b1调用活动 B。或者您使用不同的请求代码 c1 调用活动 C。因此,当您从 B 或 C 返回时,您可以通过请求代码知道来自哪个。
在 B 中你做某事并返回到 A。有时你决定你在 B 中所做的是一个“取消”并标记它,所以你将结果代码设置为 CANCEL。其他时候,您决定您所做的是一种“按 OK”,因此您用结果代码 OK 标记它。然后回到 A,你可以根据这些结果做任何你需要做的事情。
您可以使用相同的请求代码 bu 调用活动 B 和 C,然后您将无法区分返回到 A。
正如android开发者基础中提到的:
为了-public void startActivityForResult (Intent intent, int requestCode)
整数参数是标识您的请求的“请求代码”。当您收到结果 Intent 时,回调会提供相同的请求代码,以便您的应用可以正确识别结果并确定如何处理它。
还有例子——
您想要启动可以允许用户选择联系人的活动,然后使用请求代码,例如:
static final int PICK_CONTACT_REQUEST = 1; // The request code
...
private void pickContact() {
Intent pickContactIntent = new Intent(Intent.ACTION_PICK, Uri.parse("content://contacts"));
pickContactIntent.setType(Phone.CONTENT_TYPE); // Show user only contacts w/ phone numbers
startActivityForResult(pickContactIntent, PICK_CONTACT_REQUEST);
}
因此,当被调用的活动将结果返回给调用者活动时,调用者活动将通过它将从被调用活动接收到的请求代码来识别结果。
在我看来,第二个只是验证新活动是否成功完成。因此,您想知道,例如,如果在您的第二个活动中成功登录,您可以传递一个 ERROR_CODE 或 SUCCESS_CODE。但是,您不喜欢第二个参数使用此方法:
void startActivity(Intent intent)
希望能帮助到你。