gpt4 book ai didi

android - 我们是否应该始终对 fragment 内的上下文进行空检查?

转载 作者:行者123 更新时间:2023-11-29 15:34:19 27 4
gpt4 key购买 nike

我的 fragment 中有一个非常简单的点击监听器:

button?.setOnClickListener {
val intent = Intent(MyActivity.createIntent(context!!)) // crash here because context is null
startActivity(intent)
}

Crashlytics 显示某些用户在单击此特定按钮时遇到 KotlinNullPointerException 崩溃。现在我知道问题正在发生,因为我正在强制展开 Context。如果我只是将它包装在一个 nullcheck 中,它就不会崩溃。

但我认为我的代码中存在更大的潜在问题,因为我总是在需要时强制解包上下文,而且我只对这段特定的代码有问题。

这里的规则是什么?我们是否应该始终取消检查我们的上下文?

最佳答案

如果您查看fragment.getContext() 方法的源代码,您将看到:

@Nullable
public Context getContext() {
return mHost == null ? null : mHost.getContext();
}

这意味着getContext 可以返回null。在内部 mHost 表示附加到的 Activity fragment 。 fragment 并不总是附加到它的托管 Activity ,您可以使用 onAttach/onDetach 生命周期回调来观察这一点。

在您的情况下,如前所述,最好的方法是使用 View

中的上下文
view.setOnClickListener { it.context }

但总的来说,始终检查可为空的内容,并且不要执行 !!,即使您确定它不是 null。通过这种方式,您的代码将不易出错,从而提供了另一种处理 null 的方法。

关于android - 我们是否应该始终对 fragment 内的上下文进行空检查?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54980856/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com