Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/EmptyTag/154.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包裹类错误_Android_Android Preferences - Fatal编程技术网

Android包裹类错误

Android包裹类错误,android,android-preferences,Android,Android Preferences,我已经从android.preference.MultiSelectListPreference复制了完整的代码。我面临以下内部类的奇怪编译错误: 第1行是原始代码,我添加了第2行 对于第2行 类型不匹配:无法从void转换为字符串[] 及 对于未注释行#1 这条线上有多个标记 -类型不匹配:无法从void转换为字符串[] -类型包中的方法readStringArray(String[])不适用于参数() 私有静态类SavedState扩展了BaseSavedState{ 设定值; 公共存储状态

我已经从
android.preference.MultiSelectListPreference
复制了完整的代码。我面临以下内部类的奇怪编译错误:

第1行是原始代码,我添加了第2行

对于第2行

类型不匹配:无法从void转换为字符串[]

及 对于未注释行#1

这条线上有多个标记 -类型不匹配:无法从void转换为字符串[] -类型包中的方法readStringArray(String[])不适用于参数()

私有静态类SavedState扩展了BaseSavedState{
设定值;
公共存储状态(地块源){
超级(来源);
值=新的HashSet();
//String[]strings=source.readStringArray();//行#1
String[]strings=source.readStringArray(values.toArray(新字符串[0]);//行#2
最终int stringCount=strings.length;
对于(int i=0;i
我真的被这些编译错误逗乐了!我实际上是在写我自己的多选偏好,但面对上面提到的唯一错误,我不知道如何解决它


感谢您的帮助。

方法
readStringArray()
没有返回值,这就是编译器抱怨的原因。您需要将一个字符串数组作为参数传递给它,它将填充您给它的字符串数组

您可以这样调用
readStringArray()

String[]things=新字符串[5];//已知地块中的阵列有5个元素 readStringArray(things)

仅当您确切知道地块中的字符串数组有多大时,此选项才有效。如果数组始终为固定大小,则可以使用此选项。如果没有,您需要在写入数组之前将数组的大小写入
,然后
包的读取器可以首先读取数组的大小,然后创建一个大小合适的字符串数组来接收数据。

阅读文档。。。你还是没法再读一遍。。。再一次。。。
private static class SavedState extends BaseSavedState {
        Set<String> values;

        public SavedState(Parcel source) {
            super(source);
            values = new HashSet<String>();
            //String[] strings = source.readStringArray(); //Line #1
            String[] strings = source.readStringArray(values.toArray(new String[0])); //Line #2

            final int stringCount = strings.length;
            for (int i = 0; i < stringCount; i++) {
                values.add(strings[i]);
            }
        }

        public SavedState(Parcelable superState) {
            super(superState);
        }

        @Override
        public void writeToParcel(Parcel dest, int flags) {
            super.writeToParcel(dest, flags);
            dest.writeStringArray(values.toArray(new String[0]));
        }

        public static final Parcelable.Creator<SavedState> CREATOR =
                new Parcelable.Creator<SavedState>() {
            public SavedState createFromParcel(Parcel in) {
                return new SavedState(in);
            }

            public SavedState[] newArray(int size) {
                return new SavedState[size];
            }
        };
    }