我已经使用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(我不知道如何执行此操作,因此请指明是否是解决方案)?
谢谢!
答案 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。