如何在Android上管理startActivityForResult

31 浏览
0 Comments

如何在Android上管理startActivityForResult

在我的活动中,我通过startActivityForResult从主活动调用第二个活动。在我的第二个活动中,有一些方法会结束这个活动(可能没有结果),但是只有一个方法会返回结果。

例如,从主活动中,我调用第二个活动。在这个活动中,我正在检查手机的一些功能,比如它是否有摄像头。如果没有,我将关闭这个活动。同时,在准备MediaRecorderMediaPlayer时,如果出现问题,我也会关闭这个活动。

如果它的设备有一个相机并且录制已经完成,那么在录制视频后,如果用户点击完成按钮,我将发送结果(录制视频的地址)回到主活动。

如何从主活动中检查结果?

admin 更改状态以发布 2023年5月24日
0
0 Comments

如何检查来自主要活动的结果?

您需要覆盖Activity.onActivityResult(),然后检查它的参数:

  • requestCode标识返回这些结果的应用程序。调用startActivityForResult()时由您定义。
  • resultCode通知您此应用程序是成功、失败还是其他情况
  • data保存此应用程序返回的任何信息。这可能是null
0
0 Comments

从您的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中更好地实现在两个活动之间传递数据,请查看“在活动之间传递数据的更好方法”。

0