Lf3*_*n4D 5 android start-activity
搜索高和低对我的问题没有任何结果.因此,我终于发帖请求一些帮助.
我有两个应用程序,都是我写的.App A启动App B,通过Intent.putExtra()传入参数.当App B启动时,这完全正常,参数传递得很好.
但是,我找不到一种方法来返回对App A的响应.使用startActivityForResult()总是立即给我带有RESULT_CANCELED的onActivityResult().经过进一步检查,logcat给了我一个警告,说明"活动正在作为一项新任务启动,因此取消了活动结果".
我尝试使用不同的启动模式,动作过滤器(android.intent.action.PICK)制作应用程序B的活动,但我没有改变任何东西.
我想做不可能的事吗?根据我的理解,我试图做的应该类似于使用第三方活动从设备的照片库中挑选图片.
编辑:
好吧,我尝试从活动B中删除LAUNCHER类别,但它仍然无法正常工作.这是我的活动:
<activity android:name=".${CLASSNAME}" android:label="@string/app_name" android:configChanges="mcc|mnc|locale|keyboardHidden|orientation" android:launchMode="standard">
<intent-filter>
<action android:name="android.intent.action.PICK" />
</intent-filter>
</activity>
Run Code Online (Sandbox Code Playgroud)
有人真的有这个工作吗?我开始怀疑启动另一个应用程序的活动永远不会返回结果,因为无论你在"intent-filter"中放置什么,它似乎总是会启动一项新任务.
确保你正在启动的Activity没有在清单中设置android:launchMode并检查android:taskAffinity没有被使用.看这里:
http://developer.android.com/guide/topics/manifest/activity-element.html#aff
确保您用于启动活动的Intent没有设置FLAG_ACTIVITY_NEW_TASK.看这里:
http://developer.android.com/reference/android/content/Intent.html#FLAG_ACTIVITY_NEW_TASK
特别要注意:"当调用者从正在启动的活动请求结果时,不能使用此标志."
如果活动是作为新任务的一部分启动的,那么Android将立即使用RESULT_CANCELED调用onActivityResult(),因为一个任务中的活动无法将结果返回给另一个任务,只有同一任务中的活动才能执行此操作.
在你的活动 B 中,你应该有这样的东西,
Intent intent = new Intent();
setResult(Activity.RESULT_OK, intent);
finish();
Run Code Online (Sandbox Code Playgroud)
或者可以是,
setResult(Activity.RESULT_OK);
finish();
Run Code Online (Sandbox Code Playgroud)
您不需要将任何数据传递给活动 A。
否则它总是以结果代码结束Activity.RESULT_CANCELED;
如果子活动因任何原因(例如崩溃)失败,父活动将收到代码为 RESULT_CANCELED 的结果。
希望这可以帮助。
| 归档时间: |
|
| 查看次数: |
7351 次 |
| 最近记录: |