Android sharedpreferences强制关闭
问题描述:
我想在PreferenceActivity中使用sharedpreferences,但不幸的是它强制关闭。部分:Android sharedpreferences强制关闭
public class EditPreferences extends PreferenceActivity {
String ListPreference;
boolean CheckboxPreference;
SharedPreferences mprefs;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
addPreferencesFromResource(R.xml.preferences);
final CheckBoxPreference checkboxPref = (CheckBoxPreference) getPreferenceManager().findPreference("checkboxPref");
checkboxPref.setOnPreferenceChangeListener(new Preference.OnPreferenceChangeListener() {
public boolean onPreferenceChange(Preference preference, Object newValue) {
if (newValue.toString().equals("true"))
{
Toast.makeText(getApplicationContext(), "CB: " + "true", Toast.LENGTH_SHORT).show();
SharedPreferences.Editor edit = mprefs.edit();
edit.putString("cbstate", "true");
edit.commit();
}
else
{
Toast.makeText(getApplicationContext(), "CB: " + "false", Toast.LENGTH_SHORT).show();
SharedPreferences.Editor edit = mprefs.edit(); //this line force closes
edit.putString("cbstate", "false");
edit.commit();
}
return true;
}
});
代码有什么问题? 谢谢, 乙
答
它看起来并不像mprefs是曾经分配一个值(除非它的发生在其他地方)
+0
这是缺少的:mprefs = this.getSharedPreferences(“mprefs”,MODE_WORLD_READABLE); – erdomester
答
你应该看一下日志,看看异常的堆栈爬行,它告诉你为什么你的代码崩溃了。
我不会将此作为澄清问题添加,因为堆栈爬网未包含在问题中的事实强烈表明您没有真正查看它,如果是这种情况,那么回答你的问题,解决你的问题的最可能的办法是去看看,看看它为什么说你崩溃了。
是否有任何有价值的信息在崩溃期间显示在logcat中,您可以与我们分享? –