android ArrayMap抛出java.lang.ClassCastException:无法将java.lang.String转换为java.lang.Object[]
我使用的是android ArrayMap抛出java.lang.ClassCastException:无法将java.lang.String转换为java.lang.Object[],java,android,Java,Android,我使用的是android.support.v4.util.ArrayMap 像这样 ArrayMap<String, ArrayList<Object>> group = new ArrayMap<>(); 应用程序在此行崩溃mBaseCache=(对象[])数组[0] 非常感谢 问题的原因是多线程 此错误无法修复 更新支持V25.4.0已修复以下是解决此问题的方法: private void fixArrayMapIssue() {
android.support.v4.util.ArrayMap
像这样
ArrayMap<String, ArrayList<Object>> group = new ArrayMap<>();
应用程序在此行崩溃mBaseCache=(对象[])数组[0]代码>
非常感谢 问题的原因是多线程
此错误无法修复
更新支持V25.4.0已修复以下是解决此问题的方法:
private void fixArrayMapIssue() {
try {
if (android.os.Build.VERSION.SDK_INT >= android.os.Build.VERSION_CODES.KITKAT) {
Field mBaseCacheSize = ArrayMap.class.getDeclaredField("mBaseCacheSize");
mBaseCacheSize.setAccessible(true);
mBaseCacheSize.set(null, 100);
Field mTwiceBaseCacheSize = ArrayMap.class.getDeclaredField("mTwiceBaseCacheSize");
mTwiceBaseCacheSize.setAccessible(true);
mTwiceBaseCacheSize.set(null, 100);
}
} catch (Throwable e) {
e.printStackTrace();
}
}
当应用程序onCreate
抛出java.lang.ClassCastException:java.lang.String不能强制转换为java.lang.Object[]时,运行上述方法。您的代码太复杂了,messedup dude.mBaseCache是一个对象还是一个对象数组?错误与ArrayMap无关。mBaseCache和数组都是对象[]。您正在尝试将一个碰巧是字符串的对象强制转换为对象[]mBaseCache是ArrayMap缓存数组是对象[]类型@AhlemJarrar@yangil修好了吗?
private void fixArrayMapIssue() {
try {
if (android.os.Build.VERSION.SDK_INT >= android.os.Build.VERSION_CODES.KITKAT) {
Field mBaseCacheSize = ArrayMap.class.getDeclaredField("mBaseCacheSize");
mBaseCacheSize.setAccessible(true);
mBaseCacheSize.set(null, 100);
Field mTwiceBaseCacheSize = ArrayMap.class.getDeclaredField("mTwiceBaseCacheSize");
mTwiceBaseCacheSize.setAccessible(true);
mTwiceBaseCacheSize.set(null, 100);
}
} catch (Throwable e) {
e.printStackTrace();
}
}