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中,使用==
比较字符串
值是错误的