拡張可能な 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 でロードされているため、これが発生していることはわかっていますが、機能させることができませんでした。