Android is Crashing on ListPreference

冷暖自知 提交于 2019-12-12 04:43:30

问题


I am trying to get the value after the it is selected in setting preferences dialog. But I get a ClassCastException and a crash? Probably because I'm not sure how to get the value that has been selected and save it. Essentially I need to be able to get the new value in another Activity. How do you get these values and save and be able to find them in other activities?

 public void onSharedPreferenceChanged(SharedPreferences sharedPreferences, String key) {

        SharedPreferences s = getSharedPreferences("MY_PREFS", 0);

        // Create a editor to edit the preferences:
        SharedPreferences.Editor editor = s.edit();

 if (key.equals("language_key")) {

       sharedPreferences = PreferenceManager.getDefaultSharedPreferences(this);
       ListPreference listPref = (ListPreference) sharedPreferences; 
       String entryvalue = (String) listPref.getEntry();

        if (entryvalue == "EN")
        {
            Log.d(TAG, "EN" + entryvalue);
            Toast.makeText(getBaseContext(), "true", Toast.LENGTH_SHORT).show();
        }
        else
        {
            Log.d(TAG, "else" + entryvalue);
            Toast.makeText(getBaseContext(), "false", Toast.LENGTH_SHORT).show();
            }



       }
}

preferences xml file

<ListPreference 
            android:key="language_key"
            android:summary="Choice of language mode"
            android:title="Language Mode"
            android:defaultValue="CH"
            android:entries="@array/Languages"
        android:entryValues="@array/LanguageValues"   /> 

array.xml

<string-array name="Languages">
    <item name="EN">English</item>
    <item name="CH">Chinese</item>
    <item name="SP">Spanish</item>
</string-array>

<string-array name="LanguagesValues">
    <item name="EN">EN</item>
    <item name="CH">CH</item>
    <item name="SP">SP</item>
</string-array>

回答1:


sharedPreferences can't be casted to ListPreferences. For getting value, invoke getString method:

sharedPreferences.getString( "language_key", "");


来源:https://stackoverflow.com/questions/22314611/android-is-crashing-on-listpreference

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!