在我的活动中,我通过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();获得当前的意图