这可能是一个基本问题,但我希望能得到一些澄清。
我正在尝试做的事情:
1) 使用 requestCode 启动一个 Activity,并处理两个操作
onActivityResult,一个使用 RESULT_OK,另一个使用 RESULT_CANCELLED。
我明确地陈述了每一个。
问题是,即使我仅使用后退按钮关闭活动而不设置任何结果,后退堆栈中的活动也会收到 RESULT_CANCELLED。
通过查看源代码,我发现 RESULT_CANCELLED 是结果代码的默认值,并且结果代码始终被发回。
我读得对吗?这种情况经常发生吗?或者我在申请中做错了什么?
Source: https://github.com/android/platform_frameworks_base/blob/master/core/java/android/app/Activity.java https://github.com/android/platform_frameworks_base/blob/master/core/java/android/app/Activity.java
当您的启动 Activity 重新启动时,会在调用 onResume() 方法之前调用此 Activity 的 onActivityResult(..) 方法。查看活动文档 http://developer.android.com/reference/android/app/Activity.html#onActivityResult(int,%20int,%20android.content.Intent)
默认的 resultCode 是 RESULT_CANCELLED。
您必须在启动的 Activity 中显式调用 setResult(int) 来更改 resultCode 的值。
这就是为什么在 onActivityResult 方法中检查 resultCode == RESULT_OK 很重要。因为即使你没有调用startActivityForResult,onActivityResult也可以被调用。
这可能会令人困惑,但这是默认行为。
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
// Check which request we're responding to
if (requestCode == YOUR_REQUEST) {
// Make sure the request was successful
if (resultCode == RESULT_OK) {
// so some work
}
}
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)