Files
rr3-apk/decompiled-community/sources/androidx/fragment/app/FragmentFactory.java
Daniel Elliott c080f0d97f Add Discord community version (64-bit only)
- Added realracing3-community.apk (71.57 MB)
- Removed 32-bit support (armeabi-v7a)
- Only includes arm64-v8a libraries
- Decompiled source code included
- Added README-community.md with analysis
2026-02-18 15:48:36 -08:00

63 lines
3.0 KiB
Java

package androidx.fragment.app;
import androidx.annotation.NonNull;
import androidx.collection.SimpleArrayMap;
import androidx.fragment.app.Fragment;
import java.lang.reflect.InvocationTargetException;
/* loaded from: classes.dex */
public class FragmentFactory {
private static final SimpleArrayMap<ClassLoader, SimpleArrayMap<String, Class<?>>> sClassCacheMap = new SimpleArrayMap<>();
@NonNull
private static Class<?> loadClass(@NonNull ClassLoader classLoader, @NonNull String str) throws ClassNotFoundException {
SimpleArrayMap<ClassLoader, SimpleArrayMap<String, Class<?>>> simpleArrayMap = sClassCacheMap;
SimpleArrayMap<String, Class<?>> simpleArrayMap2 = simpleArrayMap.get(classLoader);
if (simpleArrayMap2 == null) {
simpleArrayMap2 = new SimpleArrayMap<>();
simpleArrayMap.put(classLoader, simpleArrayMap2);
}
Class<?> cls = simpleArrayMap2.get(str);
if (cls != null) {
return cls;
}
Class<?> cls2 = Class.forName(str, false, classLoader);
simpleArrayMap2.put(str, cls2);
return cls2;
}
public static boolean isFragmentClass(@NonNull ClassLoader classLoader, @NonNull String str) {
try {
return Fragment.class.isAssignableFrom(loadClass(classLoader, str));
} catch (ClassNotFoundException unused) {
return false;
}
}
@NonNull
public static Class<? extends Fragment> loadFragmentClass(@NonNull ClassLoader classLoader, @NonNull String str) {
try {
return loadClass(classLoader, str);
} catch (ClassCastException e) {
throw new Fragment.InstantiationException("Unable to instantiate fragment " + str + ": make sure class is a valid subclass of Fragment", e);
} catch (ClassNotFoundException e2) {
throw new Fragment.InstantiationException("Unable to instantiate fragment " + str + ": make sure class name exists", e2);
}
}
@NonNull
public Fragment instantiate(@NonNull ClassLoader classLoader, @NonNull String str) {
try {
return loadFragmentClass(classLoader, str).getConstructor(new Class[0]).newInstance(new Object[0]);
} catch (IllegalAccessException e) {
throw new Fragment.InstantiationException("Unable to instantiate fragment " + str + ": make sure class name exists, is public, and has an empty constructor that is public", e);
} catch (InstantiationException e2) {
throw new Fragment.InstantiationException("Unable to instantiate fragment " + str + ": make sure class name exists, is public, and has an empty constructor that is public", e2);
} catch (NoSuchMethodException e3) {
throw new Fragment.InstantiationException("Unable to instantiate fragment " + str + ": could not find Fragment constructor", e3);
} catch (InvocationTargetException e4) {
throw new Fragment.InstantiationException("Unable to instantiate fragment " + str + ": calling Fragment constructor caused an exception", e4);
}
}
}