Android MultiSelectListPreference,java.lang.String无法强制转换为java.util.Set [英] Android MultiSelectListPreference, java.lang.String cannot be cast to java.util.Set
问题描述
我尝试为我的设置视图实现MultiSelectListPreference:
I try to implement MultiSelectListPreference for my settings view:
<MultiSelectListPreference
android:title="@string/title"
android:summary="@string/message"
android:key="pref_foobar"
android:defaultValue="@array/empty_array"
android:entries="@array/fooArray"
android:entryValues="@array/fooValues" />
数组:
<resources>
<string-array name="fooArray">
<item>Foo</item>
<item>Bar</item>
</string-array>
<string-array name="fooValues">
<item>foo_value</item>
<item>bar_value</item>
</string-array>
<string-array name="empty_array"/>
</resources>
但这给了我以下例外:
java.lang.RuntimeException:无法启动活动 ComponentInfo {com.myproject/.SettingsActivity}: java.lang.ClassCastException:无法将java.lang.String强制转换为 java.util.Set
java.lang.RuntimeException: Unable to start activity ComponentInfo{com.myproject/.SettingsActivity}: java.lang.ClassCastException: java.lang.String cannot be cast to java.util.Set
完整的堆栈跟踪: http://pastebin.com/kBDByXY5
有什么想法吗?
代码:
public class SettingsActivity extends Activity {
private static final String TAG_SETTINGS_FRAGMENT = "SETTINGS_FRAGMENT";
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
if (savedInstanceState == null) {
getFragmentManager().beginTransaction()
.replace(android.R.id.content, new PreferenceFragment(), TAG_SETTINGS_FRAGMENT).commit();
}
}
public static class PreferenceFragment extends android.preference.PreferenceFragment{
public PreferenceFragment() {
//required
}
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
addPreferencesFromResource(R.xml.preferences);
}
}
}
推荐答案
感觉您已经在设备或仿真器上的此键下有了普通的String
首选项.尝试完全卸载和重新安装该应用程序,或者在设置"屏幕的应用程序屏幕中使用该应用程序的清除数据",以清除现有的SharedPreferences
.
It feels like you already have a plain String
preference under this key on your device or emulator. Try completely uninstalling and reinstalling the app, or using "Clear Data" for the app in its screen in Settings, to wipe out your existing SharedPreferences
.
这篇关于Android MultiSelectListPreference,java.lang.String无法强制转换为java.util.Set的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!