我有完整的代码从android.preference.MultiSelectListPreference
. 我面临以下内部类的奇怪编译错误:
第 1 行是原始代码,我添加了第 2 行
对于第 2 行
类型不匹配:无法从 void 转换为 String[]
和未注释的第 1 行
此行有多个标记 - 类型不匹配:无法从 void 转换为 String[] - Parcel 类型中的方法 readStringArray(String[]) 不适用于参数 ()
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];
}
};
}
我真的被这些编译错误逗乐了!我实际上正在编写自己的多选首选项,但面临上述唯一一个错误并且不知道解决它。
感谢任何帮助。