2011-06-27 6 views
0

J'essaie d'utiliser sharedpreferences dans une PreferenceActivity, mais malheureusement elle se ferme. Partie de celui-ci:Les préférences partagées Android forcent la fermeture

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

});

Quel est le problème avec le code? Merci, B

+1

est-il des informations précieuses affichées dans logcat lors de l'accident que vous pourriez partager avec nous ?? –

Répondre

1

Il ne ressemble pas à mprefs est toujours assigné une valeur (à moins qu'il ne se passe ailleurs)

+0

Cela manquait: mprefs = this.getSharedPreferences ("mprefs", MODE_WORLD_READABLE); – erdomester

1

Vous devriez regarder le journal pour voir le crawl pile de l'exception, qui vous dit pourquoi votre code plante.

Je ne l'ajoute pas à titre de question à clarifier, parce que le fait qu'une analyse de pile ne soit pas incluse dans la question est une indication forte que vous ne l'avez pas réellement examinée, et si tel est le cas, le répondre à votre question et la solution la plus probable à votre problème est d'aller regarder cela et voir pourquoi il dit que vous vous plantez.

Questions connexes