如何在Android上管理`startActivityForResult`?

在我的活动中,我通过startActivityForResult从主要活动中调用第二个活动。 在我的第二个活动中,有一些方法可以完成此活动(也许没有结果),但是,只有其中一个返回结果。

例如,我从主要活动中调用第二个活动。 在这个活动中,我正在检查手机的一些功能,例如是否有相机。 如果它没有,那么我会关闭这个活动。 另外,在准备MediaRecorderMediaPlayer期间,如果发生问题,我会关闭此活动。

如果它的设备有摄像头并且录制完成,那么在用户点击完成按钮录制视频后,我会将结果(录制视频的地址)发送回主要活动。

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


从你的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();
    

    以获得目前的意图

    链接地址: http://www.djcxy.com/p/26211.html

    上一篇: How to manage `startActivityForResult` on Android?

    下一篇: How to pass an object from one activity to another on Android