2

我正在创建一个可扩展的 android 应用程序,我需要能够加载从不同应用程序(apk)扩展 Fragment 的类。

String packageName = "com.something.project";
String className = "com.something.project.TestFragment";
String apkName = getPackageManager().getApplicationInfo(packageName, 0).sourceDir;
PathClassLoader classLoader = new PathClassLoader(apkName,ClassLoader.getSystemClassLoader());
Class<?> clazz = classLoader.loadClass(className);
Fragment f = (Fragment)obj;

这工作正常,但是当我尝试使用 Android 支持库(android.support.v4.app.Fragment)中的 Fragment 使我的应用程序与较旧的 Android 设备兼容时,出现了问题。具体来说,当我尝试转换为 Fragment (ClassCastException) 时,我遇到了异常。我知道这正在发生,因为两个 Fragment 类都加载了不同的 ClassLoader,但我无法让它工作。

4

1 回答 1

1

所以我终于想通了。我需要从我的插件应用程序中删除 android 支持库,所以在这篇文章http://android-developers.blogspot.cz/2011/07/custom-class-loading-in-dalvik.html的帮助下,我能够使用 ant在没有 android 支持库类的情况下编译我的插件应用程序。然后它就像一个魅力。

于 2013-08-31T23:30:56.093 回答