如何在Android上管理startActivityForResult?

如何在Android上管理startActivityForResult?

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

例如,从主要活动我称之为第二个。在这项活动中,我正在检查手机的某些功能,例如是否有相机。如果没有,那么我将关闭此活动。此外,在准备期间MediaRecorderMediaPlayer如果出现问题,我将关闭此活动。

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

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



萧十郎
浏览 825回答 5
5回答

慕码人2483693

从您的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()方法。@Overrideprotected 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

慕虎7371278

补充@ Nishant的答案,返回活动结果的最佳方法是:Intent returnIntent = getIntent();returnIntent.putExtra("result",result);setResult(RESULT_OK,returnIntent);finish();我有问题new Intent();然后我发现正确的方法是使用getIntent();获得当前的意图

拉风的咖菲猫

对于那些在onActivityResult中遇到错误requestCode问题的人如果您是startActivityForResult()从您的呼叫Fragment,则拥有片段的活动会更改requestCode。如果您想在活动中获得正确的resultCode,请尝试以下操作:更改:startActivityForResult(intent, 1); 至:getActivity().startActivityForResult(intent, 1);

慕妹3146593

如果要使用活动结果更新用户界面,则无法使用“ this.runOnUiThread(new Runnable() {} 执行此操作”UI不会刷新新值。相反,你可以这样做:@Overrideprotected void onActivityResult(int requestCode, int resultCode, Intent data) {     super.onActivityResult(requestCode, resultCode, data);     if (resultCode == RESULT_CANCELED) {         return;     }     global_lat = data.getDoubleExtra("LATITUDE", 0);     global_lng = data.getDoubleExtra("LONGITUDE", 0);     new_latlng = true;}@Overrideprotected void onResume() {     super.onResume();     if(new_latlng)     {         PhysicalTagProperties.this.setLocation(global_lat, global_lng);         new_latlng=false;     }}这看起来很傻,但效果很好。
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Android
Java