onActivityResult()
是 Android 中用于处理从其他活动(Activity)返回结果的方法。当一个活动启动另一个活动并期望得到结果时,通常会使用 startActivityForResult()
方法。被启动的活动在完成其任务后,会调用 setResult()
方法来设置结果,并通过 finish()
方法返回到启动它的活动。这时,启动活动的 onActivityResult()
方法会被调用。
onActivityResult()
方法的定义如下:
protected void onActivityResult(int requestCode, int resultCode, Intent data)
requestCode
:请求码,用于标识启动活动的请求。resultCode
:结果码,用于标识活动的结果状态。data
:返回的数据,通常是一个 Intent
对象。super.onActivityResult()
在大多数情况下,不需要 在 onActivityResult()
中显式调用 super.onActivityResult()
。因为 onActivityResult()
是一个空方法,调用 super.onActivityResult()
不会执行任何操作。
然而,有些情况下,父类可能重写了 onActivityResult()
方法并添加了一些逻辑。如果你的子类也需要这些逻辑,那么你应该调用 super.onActivityResult()
。
假设父类有一个简单的 onActivityResult()
实现:
public class ParentActivity extends AppCompatActivity {
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
super.onActivityResult(requestCode, resultCode, data);
// 一些通用的处理逻辑
Log.d("ParentActivity", "onActivityResult called");
}
}
子类可以这样实现:
public class ChildActivity extends ParentActivity {
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
super.onActivityResult(requestCode, resultCode, data); // 调用父类的方法
// 子类特定的处理逻辑
if (requestCode == REQUEST_CODE && resultCode == RESULT_OK) {
// 处理返回的数据
}
}
}
onActivityResult()
常用于以下场景:
setResult()
:如果在启动的活动中没有调用 setResult()
,那么 onActivityResult()
中的 data
将为 null
。onActivityResult()
中检查的请求码和结果码与 startActivityForResult()
中设置的值匹配。onActivityResult()
被调用之前被销毁,可能会导致问题。确保活动的生命周期管理正确。希望这些信息对你有所帮助!
领取专属 10元无门槛券
手把手带您无忧上云