当从 sd 卡中的 lib 加载片段时,Android 系统在活动重新创建时无法找到片段?

2023-12-31

我已经从外部库加载了一个片段,可以在 SD 卡中成功使用,但是当 Android 系统重新创建活动时,我的应用程序崩溃了,因为 Android 系统无法找到外部库中可用的片段类。

从外部 apk 加载 Fragment 的代码。

  final String libPath = Environment.getExternalStorageDirectory() + "/lib.apk";
        final File tmpDir = getDir("dex", 0);

        final File tmpDir1 = new File(libPath);
        Log.d(TAG, ""+tmpDir1.exists());

        final DexClassLoader classloader = new DexClassLoader(libPath, tmpDir.getAbsolutePath(), null, this.getClass().getClassLoader());
        final Class<Fragment> classToLoad = (Class<Fragment>) classloader.loadClass("com.example.sujeetkumarsinha.librarycode2.MyFragment");

错误代码

    java.lang.RuntimeException: Unable to start activity ComponentInfo{com.example.sujeetkumarsinha.dynamic_code_run/com.example.sujeetkumarsinha.myapplication.MainActivity}: android.support.v4.app.Fragment$InstantiationException: Unable to instantiate fragment com.example.sujeetkumarsinha.librarycode2.MyFragment: make sure class name exists, is public, and has an empty constructor that is public
at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2678)
at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2743)
at android.app.ActivityThread.handleRelaunchActivity(ActivityThread.java:4560)
at android.app.ActivityThread.-wrap19(ActivityThread.java)
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1496)
at android.os.Handler.dispatchMessage(Handler.java:102)
at android.os.Looper.loop(Looper.java:154)
at android.app.ActivityThread.main(ActivityThread.java:6165)
at java.lang.reflect.Method.invoke(Native Method)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:888)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:778)
Caused by: android.support.v4.app.Fragment$InstantiationException: Unable to instantiate fragment com.example.sujeetkumarsinha.librarycode2.MyFragment: make sure class name exists, is public, and has an empty constructor that is public
at android.support.v4.app.Fragment.instantiate(Fragment.java:449)
at android.support.v4.app.FragmentContainer.instantiate(FragmentContainer.java:33)
at android.support.v4.app.FragmentState.instantiate(Fragment.java:110)
at android.support.v4.app.FragmentManagerImpl.restoreAllState(FragmentManager.java:2940)
at android.support.v4.app.FragmentController.restoreAllState(FragmentController.java:149)
at android.support.v4.app.FragmentActivity.onCreate(FragmentActivity.java:287)
at android.support.v7.app.AppCompatActivity.onCreate(AppCompatActivity.java:85)
at com.example.sujeetkumarsinha.myapplication.MainActivity.onCreate(MainActivity.java:26)
at android.app.Activity.performCreate(Activity.java:6687)
at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1140)
at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2631)
at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2743) 
at android.app.ActivityThread.handleRelaunchActivity(ActivityThread.java:4560) 
at android.app.ActivityThread.-wrap19(ActivityThread.java) 
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1496) 
at android.os.Handler.dispatchMessage(Handler.java:102) 
at android.os.Looper.loop(Looper.java:154) 
at android.app.ActivityThread.main(ActivityThread.java:6165) 
at java.lang.reflect.Method.invoke(Native Method) 
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:888) 
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:778) 
Caused by: java.lang.ClassNotFoundException: Didn't find class "com.example.sujeetkumarsinha.librarycode2.MyFragment" on path: DexPathList[[zip file "/data/app/com.example.sujeetkumarsinha.dynamic_code_run-1/base.apk"],nativeLibraryDirectories=[/data/app/com.example.sujeetkumarsinha.dynamic_code_run-1/lib/arm, /system/lib, /vendor/lib]]
at dalvik.system.BaseDexClassLoader.findClass(BaseDexClassLoader.java:56)
at java.lang.ClassLoader.loadClass(ClassLoader.java:380)
at java.lang.ClassLoader.loadClass(ClassLoader.java:312)
at android.support.v4.app.Fragment.instantiate(Fragment.java:439)
at android.support.v4.app.FragmentContainer.instantiate(FragmentContainer.java:33) 
at android.support.v4.app.FragmentState.instantiate(Fragment.java:110) 
at android.support.v4.app.FragmentManagerImpl.restoreAllState(FragmentManager.java:2940) 
at android.support.v4.app.FragmentController.restoreAllState(FragmentController.java:149) 
at android.support.v4.app.FragmentActivity.onCreate(FragmentActivity.java:287) 
at android.support.v7.app.AppCompatActivity.onCreate(AppCompatActivity.java:85) 
at com.example.sujeetkumarsinha.myapplication.MainActivity.onCreate(MainActivity.java:26) 
at android.app.Activity.performCreate(Activity.java:6687) 
at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1140) 
at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2631) 
at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2743) 
at android.app.ActivityThread.handleRelaunchActivity(ActivityThread.java:4560) 
at android.app.ActivityThread.-wrap19(ActivityThread.java) 
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1496) 
at android.os.Handler.dispatchMessage(Handler.java:102) 
at android.os.Looper.loop(Looper.java:154) 
at android.app.ActivityThread.main(ActivityThread.java:6165) 
at java.lang.reflect.Method.invoke(Native Method) 
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:888) 
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:778) 

None

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

当从 sd 卡中的 lib 加载片段时,Android 系统在活动重新创建时无法找到片段? 的相关文章

随机推荐

  • nginx - 从上游服务器读取自定义标头

    我使用 nginx 作为反向代理 并尝试从上游服务器 Apache 的响应中读取自定义标头 但没有成功 Apache 的响应如下 HTTP 1 0 200 OK Date Fri 14 Sep 2012 20 18 29 GMT Serve
  • ListView 适配器和焦点状态

    我有一些列表视图 这是项目视图的代码
  • Matplotlib 图未使用 ipywidgets 滑块更新

    我有以下代码来生成一个简单的图表 matplotlib notebook from ipywidgets import import numpy as np import matplotlib pyplot as plt x np lins
  • 无法自动选择 Xcode 项目

    当我在正确的目录中输入 pod install 时 我总是得到这个 分析依赖关系 Could not automatically select an Xcode project Specify one in your Podfile lik
  • SQL 计算所有行而不是计算单个行

    我有一个从数据库请求数据的 SQL 语句 SELECT ID To Poster Content Time ifnull Aura 0 as Aura FROM SELECT FROM SELECT DISTINCT FROM messag
  • WCF 票证基础身份验证

    我正在编写使用 wsHttpBinding 绑定的 WCF 服务 该服务不是托管在 IIS 中而是托管在 Windows 服务中 我希望在服务中有一个 Login user pass 方法 如果用户有效 它将向客户端提供一张票证 谁能帮助我
  • Swift 4 Decodable:嵌套数组的结构

    鉴于以下 JSON 文档 我想创建一个struct有四个属性 filmCount Int year Int category 字符串 以及actor 演员阵列 filmCount 5 year 2018 category Other act
  • 将循环缓冲区就地移动/对齐/旋转为零

    我正在使用循环缓冲区将数据推送到列表的任一端 完成后 我想对齐缓冲区 以便列表中的第一个元素位于位置零 并且可以像常规数组一样使用 而无需任何花哨的索引开销 所以我有我的循环list有能力N 它有n从任意索引开始的元素f 移动 旋转所有元素
  • 用鸭子类型语言模拟静态类型的各个方面

    在我目前的工作中 我正在构建一套严重依赖于对象的 Perl 脚本 使用 Perl 的bless 在哈希上尽可能接近 OO 现在 由于缺乏更好的表达方式 我公司的大多数程序员都不是很聪明 更糟糕的是 他们不喜欢阅读文档 并且似乎在理解其他人的
  • 检查 SaveAs 是否成功 VBA

    我需要什么样的语句来检查vba中的SaveAs操作是否成功 Sub saveBookAs wb SaveAs fileName newFile End Sub 您不需要语句来检查工作簿是否已保存 如果Save As进程失败 那么该行将自动出
  • 详细命名空间常用来做什么

    在一些较大的项目或库 例如 Eigen 中 您可以看到诸如internal or detail 我明白什么是internal有好处 但是什么是detail常用于 是否有任何通用约定将代码分发到这样的命名空间中 特别是在具有公共接口的库的情况
  • Flutter Firebase Cloud Messaging onMessage 被触发两次

    我已经实现了 firebase messaging flutter 包建议的基本配置 但是 每次我在 flutter 应用程序上收到通知时 onMessage 都会被触发两次 我正在使用 firebase messaging 6 0 9 D
  • 在 Clojure 中使用 data.zip 解析 XML 时出现 OutOfMemoryError

    我想使用 Clojure 从维基词典 XML 转储中提取标题 I used head n10000 gt out 10000 xml创建原始怪物文件的较小版本 然后我用文本编辑器进行修剪 使其成为有效的 XML 我根据里面的行数重命名了文件
  • 有更简单或更好的方法吗?

    我目前正在开发一个网站 由带有论坛的 cms 组成 我想为每个用户提供执行特定任务的积分 每次都是 这最终应该给他们一个排名 例如 如果用户发了一篇帖子 他们会得到 5 分 如果用户提交了一个话题 主题 他们会得到 20 分 依此类推 如果
  • 在 PHP 中读取原始 I/O 流的另一种方法

    我正在尝试寻找阅读 php input 的替代方法 我用它从 CURL PUT 获取 XML 数据 我通常这样做 xml file get contents php input 但是 我有一些问题file get contents 在 Wi
  • 如何在 .draw() 之后保持 jQuery DataTables 滚动位置

    我正在使用 jQuery Datatables 插件来创建一个小表 12 行 一些
  • 多线程信号处理

    在unix中 如果向多线程进程发送信号 哪个线程将执行处理函数 如果是多cpu机器 则同时运行的线程数超过1个 哪个线程将运行信号处理函数 根据男人7信号 http linux die net man 7 signal 进程中的所有线程共享
  • Java 中本地时间与 UTC 的换算

    我正在尝试在java中将本地时间转换为UTC时间 我已经写了代码 String datesToConvert 31 12 2018 23 37 00 String dateFormat dd MM yyyy HH mm ss SimpleD
  • Cycle2 旋转木马活动滑块位于中心

    我将 Cycle2 与轮播寻呼机一起使用 与此演示的方式相同 http jquery malsup com cycle2 demo caro pager php http jquery malsup com cycle2 demo caro
  • 当从 sd 卡中的 lib 加载片段时,Android 系统在活动重新创建时无法找到片段?

    我已经从外部库加载了一个片段 可以在 SD 卡中成功使用 但是当 Android 系统重新创建活动时 我的应用程序崩溃了 因为 Android 系统无法找到外部库中可用的片段类 从外部 apk 加载 Fragment 的代码 final S