在我的活动中,我通过 startActivityForResult
从主要活动中调用第二个活动 . 在我的第二个活动中,有一些方法可以完成此活动(可能没有结果),但是,只有其中一个返回结果 .
例如,从主要活动我称之为第二个 . 在这个活动中,我已经关闭了这个活动 . 此外,在准备 MediaRecorder
或 MediaPlayer
期间如果出现问题,我将关闭此活动 .
如果其设备具有摄像头并且录制完全完成,则在录制视频后如果用户点击完成按钮,则我将结果(录制视频的地址)发送回主活动 .
如何查看主要活动的结果?
8 回答
对于那些有问题的人wrong requestCode in onActivityResult
如果从
Fragment
调用startActivityForResult()
,则拥有Fragment的Activity会更改requestCode .如果您想在活动中获得正确的resultCode,请尝试以下方法:
更改:
startActivityForResult(intent, 1);
致:getActivity().startActivityForResult(intent, 1);
Example
要在上下文中查看整个过程,这是一个补充答案 . 有关更多说明,请参见my fuller answer .
MainActivity.java
SecondActivity.java
从
FirstActivity
使用startActivityForResult()
方法调用SecondActivity
例如:
在
SecondActivity
中设置要返回FirstActivity
的数据 . 如果你没有设置任何 .例如:如果要发送回数据,请在secondActivity中:
如果您不想返回数据:
现在,在FirstActivity类中,为
onActivityResult()
方法编写以下代码 .首先在第一个
Activity
中使用带有参数的startActivityForResult()
,如果要将数据从第二个Activity
发送到第一个Activity
,然后使用带有setResult()
方法的Intent
传递值,并在第一个Activity
中的onActivityResult()
方法中获取该数据 .您需要覆盖Activity.onActivityResult()然后检查其参数:
requestCode
标识哪个应用返回了这些结果 . 当您调用startActivityForResult()
时,由您定义 .resultCode
通知您此应用程序是成功,失败还是其他内容data
保存此应用程序返回的任何信息 . 这可能是null
.android中非常常见的问题
It can be broken down into 3 Pieces
1)开始活动B(活动A中发生)
2)设置请求的数据(在活动B中发生)
3)接收请求的数据(在活动A中发生)
在此部分中,您可以决定是否要在特定事件发生时发送数据 .
例如:在活动B中有一个EditText和两个按钮b1,b2 .
单击按钮b1将数据发送回活动A.
单击按钮b2不会发送任何数据 .
Sending data
Not sending data
user clicks back button
默认情况下,结果使用Activity.RESULT_CANCEL响应代码设置
对于覆盖onActivityResult方法
补充@ Nishant的答案,返回活动结果的最佳方法是:
我遇到了问题
然后我发现正确的方法是使用
获得当前的意图
如果要使用活动结果更新用户界面,则无法使用
this.runOnUiThread(new Runnable() {}
这样,UI将不会刷新新值 . 相反,你可以这样做:这看起来很傻,但效果很好 .