使用createChooser从活动A启动ActivityForResult意图我想完成活动A但不是当用户按下后退按钮时

时间:2012-06-08 17:06:39

标签: android android-activity android-intent share activity-finish

所以我在活动A中有这个:

startActivityForResult(Intent.createChooser(share, "Share using"), 0);

启动选择器以使用活动B共享内容。当活动B完成时,我希望活动A也完成:

@Override
protected void onActivityResult(int requestCode, int resultCode, Intent intent){
    super.onActivityResult(requestCode, resultCode, intent);

    this.finish();

}

问题是当用户在选择器打开时按下后退按钮时,活动A结束......我不想发生这种情况。我已经尝试覆盖活动A中的onBackPressed方法,但是当选择器打开时,这似乎不适用。请帮帮我。

更新:我应该提到活动B不受我的控制,是用户决定与之分享的。

更新2:问题在于选择器活动和用户从选择器中选择的活动被认为是相同的活动,因此当用户关闭活动B(用于共享文本的活动)时,onActivityResult获取与选择器活动相同的resultCode和requestCode。必须有办法解决这个问题,但我无法想到它。

2 个答案:

答案 0 :(得分:1)

您应该在调用

之前测试返回requestCode和resultCode的内容

this.finish();

这样,如果用户在选择某事之前按下后退按钮,您的活动A将不会被销毁。

答案 1 :(得分:0)

您需要检查它是 a)正确的活动和 b)正确的结果代码。你的onActivityResult应该是这样的:

@Override 
protected void onActivityResult(int requestCode, int resultCode, Intent intent){
    super.onActivityResult(requestCode, resultCode, intent);

    if (requestCode == 0) {
        if (resultCode == RESULT_OK) {
           this.finish();
        }
    }
}