3

所以我在活动 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();

}

问题在于,当用户打开时按下后式按钮时,Active A完成……我不想发生。我曾尝试覆盖 Activity A 中的 onBackPressed 方法,但这似乎在选择器打开时不适用。请帮我。

更新:我应该提到活动 B 不在我的控制之下,并且是用户决定与之共享的任何内容。

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

4

2 回答 2

1

您应该在调用之前测试返回 requestCode 和 resultCode 的内容

this.finish();

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

于 2012-06-08T17:13:31.377 回答
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();
        }
    }
} 
于 2013-08-01T17:46:55.420 回答