Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/210.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
android ArrayMap抛出java.lang.ClassCastException:无法将java.lang.String转换为java.lang.Object[]_Java_Android - Fatal编程技术网

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();
            }
    }