Java 从ListPreference获取keyValue

Java 从ListPreference获取keyValue,java,android,string,boolean,listpreference,Java,Android,String,Boolean,Listpreference,以下问题: preferences.xml: <ListPreference android:title="titel" android:summary="summary" android:key="remove_onclick" android:entries="@array/removeOnclick" android:entryValues="@array/removeOnclick_value"

以下问题:

preferences.xml

    <ListPreference
        android:title="titel"
        android:summary="summary"
        android:key="remove_onclick"
        android:entries="@array/removeOnclick"
        android:entryValues="@array/removeOnclick_value"
        android:defaultValue="3"/>
这不行

原因:java.lang.ClassCastException:java.lang.Boolean不能为 转换为java.lang.String com.notification.app.SettingsActivity.onCreate(SettingsActivity.java:14)

设置活动性:

@Override
public void onCreate(Bundle savedInstanceState){
    super.onCreate(savedInstanceState);
    addPreferencesFromResource(R.xml.preferences);
    PreferenceManager.setDefaultValues(this, R.xml.preferences, false);
 }
ListPreference pref = findPreference("remove_onclick");
String value = pref.getValue();
if (value.equals("3")){
    // do something here with value 3
} 
编辑
strings.xml

<string-array name="removeOnclick">
    <item>Always</item>
    <item>Never</item>
    <item>Always ask</item>
</string-array>

<string-array name="removeOnclick_value">
    <item>1</item>
    <item>2</item>
    <item>3</item>
</string-array>
更新:

我只需要删除缓存和内存…

尝试使用getBaseContext()

试试这个

if(removeonklick == "3")
{}
尝试使用getBaseContext():

试试这个

if(removeonklick == "3")
{}

首先,此行应放在MainActivity的onCreate方法中:

PreferenceManager.setDefaultValues(this, R.xml.preferences, false);
要从SettingsActivity中的ListPreference中获取值:

@Override
public void onCreate(Bundle savedInstanceState){
    super.onCreate(savedInstanceState);
    addPreferencesFromResource(R.xml.preferences);
    PreferenceManager.setDefaultValues(this, R.xml.preferences, false);
 }
ListPreference pref = findPreference("remove_onclick");
String value = pref.getValue();
if (value.equals("3")){
    // do something here with value 3
} 
如果要从MainActivity获取值,请调用:

    SharedPreferences sharedConfig = PreferenceManager.getDefaultSharedPreferences(this);
    String removeOnklick = sharedConfig.getString("remove_onclick", "3");
    if(removeOnklick.equals("1"){
           // do something here with value 1
   } 

首先,此行应放在MainActivity的onCreate方法中:

PreferenceManager.setDefaultValues(this, R.xml.preferences, false);
要从SettingsActivity中的ListPreference中获取值:

@Override
public void onCreate(Bundle savedInstanceState){
    super.onCreate(savedInstanceState);
    addPreferencesFromResource(R.xml.preferences);
    PreferenceManager.setDefaultValues(this, R.xml.preferences, false);
 }
ListPreference pref = findPreference("remove_onclick");
String value = pref.getValue();
if (value.equals("3")){
    // do something here with value 3
} 
如果要从MainActivity获取值,请调用:

    SharedPreferences sharedConfig = PreferenceManager.getDefaultSharedPreferences(this);
    String removeOnklick = sharedConfig.getString("remove_onclick", "3");
    if(removeOnklick.equals("1"){
           // do something here with value 1
   } 

arrays.xml
的内容是什么?(如果这是一个错误的问题,您将
@array
?)的内容存储在strings.xml中的string.xml中作为字符串数组什么是
array.xml
?(如果这是一个错误的问题,您将
@array
?)的内容作为字符串数组存储在strings.xml中。我无法写入
string removeOnklick=sharedConfig.getString
,如果我这样做,并启动它崩溃的设置。@Landei00,在启动应用程序之前尝试清除应用程序的数据。哦,是的,就是这样!谢谢:)如果我这样做,并且启动设置,它就会崩溃,我将无法写入
String removeOnklick=sharedConfig.getString
。@Landei00,请在启动应用程序之前尝试清除应用程序的数据。哦,是的,就是这样!谢谢:)您可以选择您的答案来更改
removeonklick
行(通过按下面的灰色编辑-或单击此评论中的)。
适合在活动中获取首选项。此外,使用
==
比较Java中的
字符串值是错误的方法。您可以在回答中更改
removeonklick
行(通过按下面的灰色编辑-或单击此注释中的)。
适合在活动中获取首选项。另外,在Java中,使用
==
比较
字符串
值是错误的