在我的活动中,我通过startActivityForResult
从主活动调用第二个活动。在我的第二个活动中,有一些方法可以完成此活动(可能没有结果),但是,只有其中一个返回结果。
例如,从主要活动我称之为第二个。在这项活动中,我正在检查手机的某些功能,例如是否有相机。如果它没有,那么我将关闭此活动。此外,在准备MediaRecorder
或MediaPlayer
期间如果出现问题,我将关闭此活动。
如果其设备有摄像头并完全录制,则在用户点击完成按钮后录制视频后,我会将结果(录制视频的地址)发送回主要活动。
如何检查主要活动的结果?
从你的FirstActivity
致电SecondActivity
使用startActivityForResult()
方法
例如:
Intent i = new Intent(this, SecondActivity.class);
startActivityForResult(i, 1);
在您的SecondActivity
设置要返回到数据FirstActivity
。如果您不想返回,请不要设置任何。
例如:在SecondActivity
如果要发送回数据:
Intent returnIntent = new Intent();
returnIntent.putExtra("result",result);
setResult(Activity.RESULT_OK,returnIntent);
finish();
如果您不想返回数据:
Intent returnIntent = new Intent();
setResult(Activity.RESULT_CANCELED, returnIntent);
finish();
现在,在您的FirstActivity
类中,为onActivityResult()
方法编写以下代码。
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
if (requestCode == 1) {
if(resultCode == Activity.RESULT_OK){
String result=data.getStringExtra("result");
}
if (resultCode == Activity.RESULT_CANCELED) {
//Write your code if there's no result
}
}
}//onActivityResult
如何检查主要活动的结果?
您需要覆盖Activity.onActivityResult()
然后检查其参数:
requestCode
标识哪个应用返回了这些结果。这是由您在调用startActivityForResult()
时定义的。 resultCode
通知您此应用程序是成功,失败还是其他内容data
保存此应用程序返回的任何信息。这可能是null
。 补充 @ Nishant 的答案,返回活动结果的最佳方法是:
Intent returnIntent = getIntent();
returnIntent.putExtra("result",result);
setResult(RESULT_OK,returnIntent);
finish();
我有问题
new Intent();
然后我发现正确的方法是使用
getIntent();
获得当前的意图