setResult最有效

时间:2014-10-03 21:55:36

标签: android start-activity activity-finish

我已经使用setResult(RESULT_OK,intent)了一段时间了,我遇到了一些奇怪的事情。

大部分时间,大约3/4的时间我输入一个活动,然后使用下面的代码从它退出:

Intent intent = new Intent();   
intent.putExtra(KEY_ENVIRONMENT_SURVEY, esurvey);       
setResult(RESULT_OK, intent);   
finish();

在返回的活动中,大部分时间都返回RESULT_OK,但有时会返回RESULT_CANCELLED,看似很随机。可能是什么导致了这个?可以在连接esurvey之前调用finish()(它是可以分配的),默认值是RESULT_CANCELLED吗?如果是这样,我该怎么办呢?使用处理程序并使用postDelayed或检查是否设置了RESULT_OK(我不知道如何执行此操作,因此请指明是否是解决方案)?

谢谢!

2 个答案:

答案 0 :(得分:0)

尝试将此代码移到重写的finish()方法中。这将确保每次活动结束时都会调用它。

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

答案 1 :(得分:-1)

我正在重新审视这个问题,因为我发现了应用程序中的故障。 "返回"按钮非常靠近我指定移动到下一个活动的按钮。我允许在第一个按钮之后注册按钮按下,所以有时活动似乎已经通过触摸"完成"按钮,但实际上是由"返回"导航回来的。按钮。

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