内容解析器notifyChange()不工作

2023-11-30

我已经设置了一个片段来使用 CursorLoader 从自定义内容提供程序中提取数据。

问题是,当我使用内容解析器更新 SQLite 表中的记录时,光标不会刷新,即getContext().getContentResolver().notifyChange(myUri, null)没有影响。我必须退出片段并再次打开它才能看到更改。

我认为问题是加载器没有观察到我用来更新行的 URI:

  • 创建加载程序的 URI -content://com.myapp.provider/MyTable/Set/22
  • 更新行的 URI -content://com.myapp.provider/MyTable/167

167 标识表中的唯一行。 22 标识表中的一组行。有没有什么方法可以告诉加载器第 167 行属于第 22 行,因此它应该重置光标?

这是代码,以防它带来更多清晰度:

在 Fragment 中创建 CursorLoader :

@Override
public Loader<Cursor> onCreateLoader(int arg0, Bundle queryBundle) {
    CursorLoader cursorLoader = new CursorLoader(getActivity(), Uri.parse("content://com.myapp.provider/MyTable/Set/22"), myProjection, null, null, null);
    return cursorLoader;
}

在按钮上单击片段:

mContext.getContentResolver().update("content://com.myapp.provider/MyTable/167", values, null, null);

内容提供者类:

private static final String AUTHORITY = "com.myapp.provider";
private static final String TABLE_PATH = "MyTable";
public static final String CONTENT_URI_BASEPATH = "content://" + AUTHORITY + "/" + TABLE_PATH;

private static final int URITYPE_TABLE = 1;
private static final int URITYPE_SINGLE_SET = 2;
private static final int URITYPE_SINGLE_ROW = 3;

private static final UriMatcher sUriMatcher = new UriMatcher(UriMatcher.NO_MATCH);
static{
    sUriMatcher.addURI(AUTHORITY, TABLE_PATH,URITYPE_TABLE);
    sUriMatcher.addURI(AUTHORITY, TABLE_PATH + "/Set/#", URITYPE_SINGLE_SET);
    sUriMatcher.addURI(AUTHORITY, TABLE_PATH + "/#", URITYPE_SINGLE_ROW);
    }

@Override
public int update(Uri myUri, ContentValues values, String selection, String[] selectionArgs){
    int rowCount = 0;
    String id;
    SQLiteDatabase db = localDB.getWritableDatabase();
    int uriType = sUriMatcher.match(myUri);

    switch(uriType){
    case URITYPE_SINGLE_ROW :
    id = uri.getLastPathSegment();
        //selection and selectionArgs are ignored since the URI itself identifies a unique row. 
        rowCount = db.update(MyTable.TABLE_NAME, values, MyTable.COLUMN_ID + " = ?", new String[] {id});
    }

    getContext().getContentResolver().notifyChange(myUri, null);
    return rowCount;
}

我有类似的问题并发现解决方案在这里.

简而言之,事实证明我需要打电话setNotificationUri(ContentResolver cr, Uri uri)在返回的光标上query()我的内容提供商的方法。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

内容解析器notifyChange()不工作 的相关文章

  • Android SQLite 数据库从查询中删除重复项

    我是 SQLite 新手 我使用此查询是为了从特定用户的列中提取所有行 Cursor c db query true TABLE COLUMN USER user null null null null null 这是表格的示例 group
  • Android 上的多处理

    我一直在 Android 上执行一些测试 以验证并行化算法 如 FFT 的性能可以提高多少 我通过使用带有 JNI FFTW 的 pthread 和 Java 线程 来自 JTransforms 来实现这些算法 我没有像预期那样通过使用线程
  • 如何设计Android建筑物室内地图? [关闭]

    Closed 这个问题需要多问focused help closed questions 目前不接受答案 我想设计一个 Android 应用程序 它可以帮助学生和其他人在特定建筑物 一层 中导航 显示前往教室的步行方向 我需要帮助 这是您通
  • SDK 管理器缺少模拟器的旧版 Android 系统映像

    我刚刚重新安装了 ADT 捆绑包 20130522 和 Android Studio 因为我的 eclipse 安装再次搞砸了 但那是另一个故事了 在任一版本中 当我启动 SDK Manager 时 都没有任何 2 2 的系统映像 只有 2
  • 使用 HashMap 映射 String 和 int

    我有一个显示国家 地区名称的列表视图 我已将名称作为字符串数组存储在 strings xml 中 称为国家 地区名称 在填充 ListView 时 我使用从 strings xml 读取的 ArrayAdapter String count
  • Android 操作栏 SearchView 作为自动完成功能?

    我在操作栏中使用 SearchView 我想在搜索视图上使用自动完成功能来从数据库中获取结果 这可能吗 或者我是否需要使用自定义文本框 然后添加自动完成功能 所以我只需要对 v7 版本执行此操作 并沮丧地发现我不能简单地使用 ArrayAd
  • 尝试在谷歌地图V2 Android应用程序中获取空数组的长度

    我目前正在使用谷歌地图API开发一个Android应用程序 有时我会因为没有明显的原因而发生奇怪的崩溃 在我看来 这是崩溃日志 12 02 16 38 57 071 20796 21137 com appsolute ParkYoo E A
  • 如何将webview内容划分为多个页面

    我必须使用 Android 上的 PdfDocument 从 webView 创建 PDF https developer android com reference android graphics pdf PdfDocument htm
  • 如何以编程方式关闭画中画

    我在使用画中画模式时遇到了这个问题 当从 PIP 本身以外的其他位置再次打开 Activity 时 我想关闭 PIP 画中画 不是来自关闭按钮 我想要与 youtube 相同的场景 即当用户单击 PIP 画中画 时 它会打开相同的活动 但是
  • 移动到SD卡

    我知道从 android 2 2 开始可以使用移动到 SD 卡功能 我想知道有没有办法在我的程序中检测设备是否支持移动到 SD 卡功能 如果支持 则可以移动 否则如果不支持 则什么也不会发生 将在手机内存中 我的主要问题是我的应用程序支持
  • android gradle插件-离线安装

    我必须在离线电脑上安装 android gradle 插件 通过谷歌搜索 我了解到我可以通过本地 Maven 存储库来做到这一点 但从不成功的尝试和所有关于这个问题的质量保证中我知道这并不简单 我从来没有和maven一起工作过 有经验的人可
  • Android 10 中没有设备筛选器的 USB_DEVICE_ATTACHED

    我正在开发一个 Android 应用程序 它在清单中为 BroadcastReceiver 注册了四个意图过滤器 这些都是 android hardware usb action USB DEVICE ATTACHED android ha
  • 获取接收者的设备令牌以在 Firebase 中发送通知

    所以我正在学习如何使用 firebase 发送设备到设备的通知 我看到了这个answer https stackoverflow com a 42548586 5237289发送通知 看起来很简单 现在 我知道要获取发件人的令牌 它应该如下
  • Meteor:即使设置了 ANDROID_HOME 也未设置

    操作系统 Ubuntu 14 04 框架 流星1 1 0 2 应用名称 Songofy 这是输出meteor install sdk android meteor install sdk android Found Android bund
  • 什么是版本代码主要?和versionCode有什么区别?

    我刚刚发现PackageInfo versionCode https developer android com reference android content pm PackageInfo html versionCode在 Andr
  • android中如何将字符串转换为unicode

    我正在解析一些unicodes from json to my android应用程序 API 给出unicodes像这样的图标 ue600 当我将这个unicode直接添加到textview like textview setText u
  • 使用 Android O 的“android:fontFamily”时出现错误“文件名必须以 .xml 结尾”?

    Android O 引入了一项新功能 XML 中的字体 它允许您将字体用作资源 我正在创建font资源文件中的文件夹 由安卓开发者 https developer android com preview features working w
  • Android IntentService无法实例化类;没有空构造函数

    我有一个MainActivity需要访问在线 API 从而使用网络资源 的类 这需要我在单独的文件中创建的后台线程HttpRequestService java MainActivity java public class MainActi
  • 如何像UCBrowser一样使用webview打开url

    我是安卓新手 我正在尝试制作一个示例应用程序来在 webview 中打开网站 问题是 网站以桌面模式打开 如何才能像UC浏览器 手机模式 一样打开网站 尝试这个 它应该有效 webview1 getSettings setJavaScrip
  • 无法 ACTION_VIEW 外部存储上的文件

    我的 Android 手机的外部存储中有一个文件 在本例中是模拟的 知道通往它的路径和 或拥有File代表它的对象 我如何使用Intent在适当的应用程序中打开它 我尝试的第一件事是 startActivity new Intent Int

随机推荐

  • 错误渲染视图:java.lang.IllegalStateException:已为此响应调用 getOutputStream()

    我正在 JSF 和 spring 中创建一个项目 其主要目的是在浏览器中生成 PDF 文件 一切看起来都很好 也生成了 pdf 但在控制台上我遇到了这个异常 有人对此有任何想法吗 我搜索了一下 发现很多人都有这个问题 但我没有找到适合我的问
  • CSS、嵌套 div 和边距与填充

    我完全理解盒子模型 这个问题更多的是试图确定关于何时使用边距和何时使用填充的语义方法 这是一个典型的例子 首先 用简单的英语来说 情况 我们有一个容器div 里面有一个段落元素 目标 在 div 内部和段落外部之间有 12px 的空间 选项
  • C# Windows Universal 10 TopMost 窗口

    我正在开发一个 Windows 10 通用应用程序 UWP 是否可以将应用程序设置为 TopMost 始终位于顶部 喜欢WPF or Winforms 最上面的属性 Thanks Creators Update 中添加了一项名为 Compa
  • 映射两个列表[关闭]

    这个问题不太可能对任何未来的访客有帮助 它只与一个较小的地理区域 一个特定的时间点或一个非常狭窄的情况相关 通常不适用于全世界的互联网受众 为了帮助使这个问题更广泛地适用 访问帮助中心 我最近问了一个关于使用apply函数作用于两个列表 每
  • 什么 SQL 查询或视图将显示“动态列”

    我有一个数据表 我允许人们向该表添加元数据 我为他们提供了一个界面 允许他们将其视为向存储数据的表添加额外的列 但实际上我将数据存储在另一个表中 Data Table DataID Data Meta Table DataID MetaNa
  • CSS 元素恢复默认样式

    CSS 中有没有一种快速的方法来删除应用于元素的所有样式 例如 假设某种选项卡菜单 div class outer div div div div div div div div div CSS 应用 outer foo blee bar
  • 自定义地图功能 - 它是如何工作的?

    对于不清楚的主题标题 我深表歉意 我在计划中有这个函数 它是map功能 它工作得很好 但我在试图理解它时迷失了方向 define my map proc ls letrec iter lambda proc ls0 if null ls0
  • C++ 使用多个分隔符分解字符串[重复]

    这个问题在这里已经有答案了 可能的重复 C 中通过多个分隔符将字符串拆分为单词 我目前正在尝试读取一个文件 其中每行都有不同的制表符和空格 用于分隔需要插入二叉树中的关键属性 我的问题是 如何仅使用 STL 使用多个分隔符分割一行 在一天的
  • document.elementFromPoint(x,y) 获取 iframe 内的元素

    我试图获取 html 页面中的元素 我使用 document elementFromPoint x y 来检测输入元素 当没有 iframe 时它工作正常 但在 iframe 内部 它在这段代码中不起作用 html如下 我错过了什么吗 di
  • RequireJS 未加载名为“module.js”的文件或模块

    我刚刚开始使用 RequireJS 我尝试了一个简单的代码 但一种方法有效 但另一种方法无效 文件夹 script 有 main js module js require js 在 main js 中 requirejs module fu
  • 克隆控件 - C# (Winform) [重复]

    这个问题在这里已经有答案了 可能的重复 是否可以复制某个控件的所有属性 C 窗口窗体 我必须创建一些类似于设计时创建的控件的控件 创建的控件应该具有与预定义控件相同的属性 或者换句话说 我想复制一个控件 有没有一行代码可以达到这个目的 或者
  • 快速屏蔽圆段

    I m creating a simple player app There is a circle that shows a progress of playing a song 在 Swift 中绘制这个圆圈并制作蒙版的最佳方法是什么
  • 获取当前类的typedef

    我目前正在将 boost intrusive ptr 与我的 GUI 类一起使用 虽然这或多或少是一个方便的问题 但是否有正确的方法来获取当前类的类型名 我问的原因是我有一个用于定义不同指针类型的宏 define INTRUSIVE PTR
  • Python - 从 Selenium 中 ::before 伪元素上的 CSS 属性“content”获取文本?

    我正在尝试抓取一些元素并返回网页上显示的文本 我相信我可以通过 css selectors 和 xpaths 很好地找到元素 但我无法返回所需的文本 下面是我的程序 from selenium import webdriver from s
  • 使用 LoginButton 监听 Facebook 注销。 (4.1)

    我一直在阅读 但尚未找到解决方案 所以就这样吧 我正在尝试升级到 Facebook 的新 SDK 4 1 Android SDK 我可以使用以下代码使用 Facebook 的 LoginButton 成功登录用户 facebookLogin
  • pip install 中的方括号是什么意思?

    我看到越来越多的命令是这样的 pip install splinter django 这些方括号有什么作用 您使用的语法是 pip install project extra 就你而言 你是installing the splinter软件
  • Go SQL 驱动程序获取接口{}列值

    我正在尝试使用 go sql 驱动程序从数据库表中读取数据 并将这些值转换为 map string interface 列名是映射的键 值是interface 我将所有列添加到一个数组中 我正在使用 RawBytes 的代码示例 位于htt
  • 从 WiFi 传感器读取 RSSI

    请帮助我如何用 Java 编写代码来读取 WiFi 传感器的接收信号强度指示器 我尝试使用套接字编程来做到这一点 但我所有的尝试都没有得到我想要的 现在我正在查看 J2me 我可能会得到很好的答案 但我发现我可能需要一些建议 谢谢 您使用的
  • 为什么这个 GLUT 程序无法编译?我缺少库或标头吗?

    我刚刚开始使用 Linux Mint 11 最近我决定将 OpenGL 编程作为一种爱好 我发现代码和技术相对简单 但是 我很难尝试将所有资源放在正确的位置 代码是 include
  • 内容解析器notifyChange()不工作

    我已经设置了一个片段来使用 CursorLoader 从自定义内容提供程序中提取数据 问题是 当我使用内容解析器更新 SQLite 表中的记录时 光标不会刷新 即getContext getContentResolver notifyCha