如何在Android上管理`startActivityForResult`?
在我的活动中,我通过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();
以获得目前的意图
链接地址: 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