在我的活动中,我正在调用主要活动中的第二个活动startActivityForResult。在我的第二个活动中,有一些方法可以完成此活动(可能没有结果),但是,其中只有一个返回结果。
startActivityForResult
例如,从主要活动中,我调用了第二个活动。在这个活动中,我正在检查手机的一些功能,例如它是否有摄像头。如果没有,那么我将关闭此活动。此外,在准备期间MediaRecorder或MediaPlayer如果发生问题,我将关闭此活动。
MediaRecorder
MediaPlayer
如果它的设备有摄像头并且录制完成,那么在录制视频后,如果用户点击完成按钮,我会将结果(录制视频的地址)发送回主活动。
如何检查主要活动的结果?
从您的FirstActivity, 调用SecondActivityusingstartActivityForResult()方法。
FirstActivity
SecondActivity
startActivityForResult()
例如:
int LAUNCH_SECOND_ACTIVITY = 1 Intent i = new Intent(this, SecondActivity.class); startActivityForResult(i, LAUNCH_SECOND_ACTIVITY);
在您的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()方法编写以下代码。
onActivityResult()
@Override protected void onActivityResult(int requestCode, int resultCode, Intent data) { super.onActivityResult(requestCode, resultCode, data); if (requestCode == LAUNCH_SECOND_ACTIVITY) { if(resultCode == Activity.RESULT_OK){ String result=data.getStringExtra("result"); } if (resultCode == Activity.RESULT_CANCELED) { // Write your code if there's no result } } } //onActivityResult
要在 Kotlin 中以更好的方式在两个 Activity 之间传递数据,请阅读 “ A better way to pass data between Activities ”。