我相信我们将请求代码添加为参数,作为识别哪个子活动(从父级开始)返回结果的方法。
但我认为(可能是错误的)在任何时候,应用程序中只有一个活动可用...对吗?
那为什么我们需要第二个参数?
答案 0 :(得分:3)
当我想要关闭许多已打开的活动时,我通常会使用“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并完成活动
希望它会对你有所帮助:)。
答案 1 :(得分:1)
您有一个活动A.您可以通过请求代码 b1调用活动B.或者使用不同的请求代码c1调用活动C.因此,当您从B或C返回时,您知道请求代码。
在B中你做了一些事情然后回到A.有时候你决定在B中做的是'取消'并标记它,所以你将结果代码设置为CANCEL。其他时候你决定你所做的是一种“按下OK”,所以你用结果代码标记好了。然后回到A,根据这些结果做你需要做的事。
您可以使用相同的请求代码bu调用活动B和C,然后您将无法区分返回A。
答案 2 :(得分:1)
For- 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);
}
因此,当被调用的活动将结果返回给调用者活动时,调用者活动将会 通过它将从被调用活动接收的请求代码来识别结果。
答案 3 :(得分:0)
在我看来,仅次于验证新活动是否成功完成。因此,您想知道,例如,如果登录在第二个活动中成功,您可以传递ERROR_CODE或SUCCESS_CODE。但是,您不喜欢第二个参数使用此方法:
void startActivity(Intent intent)
希望它有所帮助。