Android setResult大部分时间都有效

Android setResult大部分时间都有效,android,start-activity,activity-finish,Android,Start Activity,Activity Finish,我已经和setResultRESULT_OK一起工作了一段时间,现在有点奇怪 大多数情况下,大约有三分之四的时间我输入一个活动,然后使用始终执行的以下代码退出该活动: Intent intent = new Intent(); intent.putExtra(KEY_ENVIRONMENT_SURVEY, esurvey); setResult(RESULT_OK, intent); finish(); 在返回到的活动中,大多数情况下,会返回RESULT\u OK,但

我已经和setResultRESULT_OK一起工作了一段时间,现在有点奇怪

大多数情况下,大约有三分之四的时间我输入一个活动,然后使用始终执行的以下代码退出该活动:

Intent intent = new Intent();   
intent.putExtra(KEY_ENVIRONMENT_SURVEY, esurvey);       
setResult(RESULT_OK, intent);   
finish();
在返回到的活动中,大多数情况下,会返回RESULT\u OK,但有时会返回RESULT\u CANCELLED,这似乎是随机的。这可能是什么原因造成的?是否可以在附加esurvey之前调用finish?它是可包裹的,默认为RESULT\u CANCELLED?如果是这样,我该如何解决这个问题?使用处理程序并使用postDelayed或check查看是否设置了RESULT_OK我不知道如何执行此操作,因此请指定这是否是解决方案


谢谢

尝试将此代码移动到覆盖的finish方法中。这将确保在每次活动完成时调用它

@Override
public void finish() {
    Intent intent = new Intent();   
    intent.putExtra(KEY_ENVIRONMENT_SURVEY, esurvey);       
    setResult(RESULT_OK, intent);   
    super.finish();
}

我再次访问这个是因为我发现了我的应用程序中的小故障。后退按钮非常接近我指定的移动到下一个活动的按钮。我允许在第一次按钮按下后注册按钮按下,因此有时活动似乎是通过触摸“完成”按钮完成的,但实际上是通过“后退”按钮导航回


我使用一个布尔标志修复了这个问题,在按butotn键时检查它是否为真,如果它等于假,则将其设置为真。

如果子活动因任何原因(如崩溃)失败,则父活动将收到一个结果,代码结果\u被取消。是的,但是这个活动做了它应该做的事情,从我大部分时间看到的情况来看,在logcat中没有什么不寻常的地方。我想我需要进一步调查,看看这是不是原因。我试试这个。你认为这些代码行中的任何东西都可能导致活动崩溃吗?@TomMcFarlin不,它们是安全的。