I am creating an extendable android application and I need to be able to load class which extends Fragment from different application (apk).
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;
This was working fine, but when I tried to use Fragment from Android support library(android.support.v4.app.Fragment) to make my application compatible with older Android devices the problem occurred. To be specific I have been getting exception when I try to cast to Fragment (ClassCastException). I know that this is happenning because both Fragment classes are loaded with different ClassLoader, but I was not able to make it work.