当 Android 的 PreferenceActivity 的 isValidFragment() 被调用时?

2024-03-24

对于我正在开发的某些应用程序,对于 API 级别 19 的设备,我遇到了异常

Caused by: java.lang.RuntimeException: Subclasses of PreferenceActivity must override isValidFragment(String) to verify that the Fragment class is valid! com... has not checked if fragment com...$. is valid.

然后,我发现对于那些应用程序android框架protected boolean isValidFragment(String fragmentName)正在被调用,其中有代码

if (getApplicationInfo().targetSdkVersion  >= android.os.Build.VERSION_CODES.KITKAT) {
        throw new RuntimeException(
                "Subclasses of PreferenceActivity must override isValidFragment(String)"
                + " to verify that the Fragment class is valid! " + this.getClass().getName()
                + " has not checked if fragment " + fragmentName + " is valid.");
    } else {
        return true;
}

然后我尝试复制错误

我的示例应用程序的代码来自首选项活动示例 http://viralpatel.net/blogs/android-preferences-activity-example/并添加了一行<uses-sdk android:targetSdkVersion="19" />在清单中。

但奇怪的是,我没有收到错误(isValidFragment() 在这种情况下没有被调用)。

所以请告诉我如何在我的示例应用程序中复制该错误。


你的问题的答案就在这篇文章里。这是一个重复的问题:

isValidFragment Android API 19 https://stackoverflow.com/questions/19973034/isvalidfragment-android-api-19

- 更新 -

解决方案如下:

基本上,无论哪个 Activity 在上面的错误中使用您的片段“com...$”,您都必须使用下面的修复程序来更新它。对于任何使用片段的活动,您应该使用此修复更新项目中的所有活动。

文档指出:

protected boolean isValidFragment (String fragmentName)

Added in API level 19

Subclasses should override this method and verify that the given fragment is a 
valid type to be attached to this activity. The default implementation returns 
true for apps built for android:targetSdkVersion older than KITKAT. For later 
versions, it will throw an exception.

您可以通过覆盖 Activity/FragmentActivity 的此方法来修复此错误:

@Override
protected boolean isValidFragment (String fragmentName) {
  return [YOUR_FRAGMENT_NAME_HERE].class.getName().equals(fragmentName);
}

如果您很懒,只是想在将所有片段编码到此方法中之前测试此修复是否有效,您可以简单地返回 true 而不进行任何检查:

@Override
protected boolean isValidFragment (String fragmentName) {
  return true;
}

我在模拟器上测试时遇到了同样的问题,这就是解决方案。

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

当 Android 的 PreferenceActivity 的 isValidFragment() 被调用时? 的相关文章

随机推荐

  • 在 Google 地图 v3 中绘制两点之间的路线时行为不一致

    场景 我试图在两者之间画一条路线n使用 Google 地图 v3 的点 纬度 局域网 为此 我正在使用DirectionsService它为我提供了一条路线 然后我将该坐标推入MVCArray然后使用 a 绘制该路径Polyline The
  • 饮食例外

    我正在解析一个不时包含格式错误的数据的文件 它抛出一个异常 我想从异常中恢复并忽略格式错误的数据 最好的方法是什么 try parse file catch Exception eat it EDIT 我认为 我的问题没有被很好地理解 我想
  • 如何在Flutter中将CameraController的XFile转换为Image类型?

    扑动的CameraController has a takePicture 从相机拍照的方法 给出了类型Future
  • 有没有办法不用每次验证就使用Google Api?

    我尝试在 PC 上的自动运行中使用 python 上的 API 但我不能 因为每次程序启动时 它都会询问我授权码 这是我的代码 client secret file client secret json flow google auth o
  • postgresql 分区上的唯一索引

    我有一个名为 cdrs 的表 CREATE TABLE cdrs i cdr bigint NOT NULL i cdrs connection bigint NOT NULL i call bigint NOT NULL customer
  • 单线程异步处理

    即使读完之后http krondo com p 1209 http krondo com p 1209 or 异步调用是否总是创建 调用新线程 https stackoverflow com questions 598436 does an
  • 像alert()函数一样停止页面执行

    当我写作时alert Hello 页面执行停止并等待批准才能继续 我有一个div设置为使用 HTML 显示为虚假警报 thisdiv有一个 确定 按钮 我希望页面停止执行 就像警报一样 直到用户单击 确定 是否可以 你不能 只有特殊的内置程
  • 如何将消息从 Flutter 传递到 Native?

    如果需要与特定 API 硬件组件交互 您如何将信息从 Flutter 传递回 Android Native 代码 是否有任何事件通道可以以其他方式发送信息或类似于回调的方式 The 平台频道 https flutter io platfor
  • 使用不同的密钥对同一文档中的 Xml 元素进行签名

    业务场景 更新可以包含包 包可以包含更改 每个包裹都必须经过某人的批准 批准后 不得更改套餐 要执行更新 必须具有 100 批准的软件包 发展思路 所有数据均保存为 XML 文件 Xml 包 元素将在批准后签署 Problem 无论我尝试什
  • 如何在 Mvccontrib 网格模型中使用自定义列?

    我正在使用 ASP NET MVC 3 Mvccontrib 网格 如下所示 Html Grid Model Columns column gt column For x gt x UserId Named ID column For x
  • Jenkins 插件的 .hpi 和 .jpi 有什么区别?

    我以两种方式安装了 Jenkins 插件 即手动保留 hpi文件位于 Jenkins 主目录中 并从 Jenkins 前端安装 管理 Jenkins gt 管理插件 我在这里注意到的是当我手动安装插件时 下载为 hpi文件 它以扩展名安装
  • 使用 Javascript 获取脚本文件的内容

    我的网页中有以下脚本元素 使用 JavaScript 我希望能够检索脚本文件的内容 我知道我可以使用 ajax 请求来获取数据 但随后我会从本地已有的服务器获取一些内容 所以我更愿意做的是从 DOM 中检索内容 如果可能的话 或具有相同结果
  • 用于分析 .NET 程序函数执行时间的工具

    有哪些工具可用于通过测量函数执行时间并生成图表来可视化调用图中各个点所花费的时间来分析 NET 程序 这会让你付出代价 但是Ants 性能分析器 http www red gate com products ants performance
  • 为什么允许空对象上的扩展方法?

    允许在空对象上调用扩展方法有什么意义 这使我不必要地检查扩展方法中的空对象 AFAIK 我无法理解这一点 请解释 扩展方法是 C 语言的语法糖 它们被编译为 ILCode 中的普通静态方法调用 静态方法在编译时不知道任何有关参数的信息
  • 在 R 中,如何在点 sf 对象上运行 st_convex_hull 函数?

    我正在尝试在 R 中获得点特征的凸包 library tmap library sf nc lt st centroid st read system file shape nc shp package sf qtm nc ch lt st
  • 前台服务被操作系统杀死

    我有一个前台服务 它从服务器下载一些数据 问题是有时操作系统杀死了我的前台服务 但服务的通知不会被删除 关于如何在服务不再存在时删除通知的任何想法 None
  • 棘手的 Django GenericRelation 查询

    假设我有一些代表现实生活中的对象的模型 Person Chair Room 我也有一个 收藏 模型 它代表这些模型的一些记录的集合 每个模型都可以是多个集合中的成员 因此 我还创建了一个 会员资格 model 表示一个对象是集合的成员 它的
  • Firestore 文档参考数组

    我的 Firestore 数据库具有以下结构 products Collection procuct 1 Document title url videos Collection video 1 Document title product
  • 如何在 mac osx 上安装 Python docx 模块

    我正在尝试生成 docx使用 Python 的文件 我搜索了网络和帖子 发现了一个模块 https github com mikemaccana python docx blob master README markdown https g
  • 当 Android 的 PreferenceActivity 的 isValidFragment() 被调用时?

    对于我正在开发的某些应用程序 对于 API 级别 19 的设备 我遇到了异常 Caused by java lang RuntimeException Subclasses of PreferenceActivity must overri