如何在Android上管理startActivityForResult
如何在Android上管理startActivityForResult
在我的活动中,我通过startActivityForResult
从主活动调用第二个活动。在我的第二个活动中,有一些方法会结束这个活动(可能没有结果),但是只有一个方法会返回结果。
例如,从主活动中,我调用第二个活动。在这个活动中,我正在检查手机的一些功能,比如它是否有摄像头。如果没有,我将关闭这个活动。同时,在准备MediaRecorder
或MediaPlayer
时,如果出现问题,我也会关闭这个活动。
如果它的设备有一个相机并且录制已经完成,那么在录制视频后,如果用户点击完成按钮,我将发送结果(录制视频的地址)回到主活动。
如何从主活动中检查结果?
admin 更改状态以发布 2023年5月24日
如何检查来自主要活动的结果?
您需要覆盖Activity.onActivityResult()
,然后检查它的参数:
requestCode
标识返回这些结果的应用程序。调用startActivityForResult()
时由您定义。resultCode
通知您此应用程序是成功、失败还是其他情况data
保存此应用程序返回的任何信息。这可能是null
。
从您的FirstActivity
,使用startActivityForResult()
方法调用SecondActivity
。
例如:
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()
方法。
@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中更好地实现在两个活动之间传递数据,请查看“在活动之间传递数据的更好方法”。