gpt4 book ai didi

android - 从 myContentProvider 加载 URI 失败(空结果)

转载 作者:行者123 更新时间:2023-11-29 02:13:45 24 4
gpt4 key购买 nike

抱歉标题可能不好,不知道如何描述好。

我已经编写了自己的名为 DeaddropDBProvider 的 ContentProvider,其中包括以下几行,用于将 URI 的一些常量设置为提供的内容:

public static final String PROVIDER_NAME = 
"squirrel.deaddropdroid.deaddropdbprovider";
public static final Uri BLOG_URI =
Uri.parse("content://"+ PROVIDER_NAME + "/blog");

现在要获取这些 URI,我将通过两种不同的方式访问它们。一个有效,另一个失败,我不明白为什么。

失败的方法:

方法一):直接调用。效果很好(缩写代码):

public class DeaddropDB {
public void getData(...) {
Cursor cursor = context.getContentResolver().query(DeaddropDBProvider.BLOG_URI,
columns, selection, selectionArgs, orderBy);
}
}

方法二:导入URI为常量;然后调用电话。这会在我尝试使用该 URI 时给出 NullPointerException,因为 URI 仍然为空。

public class DeaddropDB {
public static final Uri BLOG_URI = DeaddropDBProvider.BLOG_URI;
public void getData(...) {
Cursor cursor = context.getContentResolver().query(BLOG_URI,
columns, selection, selectionArgs, orderBy);
}
}

为什么第二种方法不起作用?为什么 BLOG_URI 为空?

最佳答案

我认为此时这是一个陈旧的问题,但由于它没有答案,我想我会投入我的 2 美分...

我认为它失败了,因为在初始化 DeaddropDB.BLOG_URI 时,您的 DeaddropDBProvider.BLOG_URI 未完全初始化。

我不是 Java 专家,但我知道静态变量是在您第一次访问类时定义的;但是,如果 A 类中有引用 B 类的初始化程序,然后 B 类尝试引用 A 类,Java 可能无法正确处理这种情况,因此如果 DeaddropDBProvider 试图从 DeaddropDB 读取任何内容以初始化静态变量,则可能有冲突。

我的建议是创建一个其他两个类都读取的 DeaddropDBSettings 类。这样你就不会以相互初始化冲突告终。

关于android - 从 myContentProvider 加载 URI 失败(空结果),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5686910/

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