【问题标题】:Android is Crashing on ListPreferenceAndroid 在 ListPreference 上崩溃
【发布时间】:2014-03-11 01:18:53
【问题描述】:

我试图在设置首选项对话框中选择该值后获取该值。但我得到了一个ClassCastException 和一个崩溃?可能是因为我不确定如何获取已选择的值并保存它。本质上,我需要能够在另一个Activity 中获得新值。您如何获得这些值并保存并能够在其他活动中找到它们?

 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();
            }



       }
}

首选项 xml 文件

<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"   /> 

数组.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>

【问题讨论】:

  • sharedPreferences 不能被强制转换为 ListPreference。您需要使用密钥从 sharedPreferences 中获取值,例如 sharedPreferences.get(key,"defaultValue");

标签: android android-preferences listpreference


【解决方案1】:

sharedPreferences 无法转换为 ListPreferences。 获取值,调用getString方法:

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

【讨论】:

  • 我改变了你的建议,但是当我选择 EN 选项时,它转到 else 语句?
  • 如何保存该值以便在其他活动中使用它?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2022-10-02
  • 2012-09-10
  • 2016-11-17
  • 2014-12-25
  • 2012-10-17
相关资源
最近更新 更多