gpt4 book ai didi

java - Android:getContext().getContentResolver() 有时会出现 NullPointerException

转载 作者:塔克拉玛干 更新时间:2023-11-02 08:24:01 27 4
gpt4 key购买 nike

我想问一下为什么我们得到这个注解:

Method invocation getContext.getContentResolver() may produce NullPointerException

为什么它在那里而不是在程序 fragment/Activity 的其他部分? Google 制作的教程中使用了这种方法 - 这里是 ContentProvider 代码的链接 https://github.com/udacity/Sunshine-Version-2/blob/sunshine_master/app/src/main/java/com/example/android/sunshine/app/data/WeatherProvider.java即使您创建一个只有空白 Activity 的应用程序并将该方法放入新创建的 ContentProvider 中,它也在那里。

我们是否应该在 ContentProvider 之外使用 getContext().getContentResolver().notifyChange(uri, null); 获取传递的 uri,然后在更新/插入/删除完成后使用 notifyChange?或者我们可以用某种方式解决它?

最佳答案

如果您查看 ContentProvider 的源代码(只需按住 SHIFT 并单击 Android Studio 中的类名),您会发现该实现将 Context 类型的对象保存为 mContext。

您的解决方案是一样的,这意味着如果 ContentProvider 的 mContext 为 null,则您的引用也将为 null。所以没有这个必要。

为了帮助您,如果您自己构建这样的结构,这只是您的 IDE 的警告。但在这种情况下总会有上下文,因为 ContentProvider 是由您的系统生成的。为避免在您的 IDE 中出现错误,只需在您的类定义上方写入 @SuppressWarnings("ConstantConditions"),例如:

...
@SuppressWarnings("ConstantConditions")
public class NoteProvider extends ContentProvider {
...

关于java - Android:getContext().getContentResolver() 有时会出现 NullPointerException,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32990098/

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