Android MultiSelectListPreference,java.lang.String无法强制转换为java.util.Set [英] Android MultiSelectListPreference, java.lang.String cannot be cast to java.util.Set

查看:105
本文介绍了Android MultiSelectListPreference,java.lang.String无法强制转换为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屋!

查看全文
相关文章
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆