2011-06-27 49 views
0

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

});

コードに問題がありますか? おかげで、 B

+1

あなたが私たちと共有できるクラッシュ中にlogcatに表示される貴重な情報はありますか? –

答えて

1

(それがどこかに起こっていない限り)それは今までに値が割り当てられmprefsようには見えません

+0

これはありませんでした:mprefs = this.getSharedPreferences( "mprefs"、MODE_WORLD_READABLE); – erdomester

1
あなたはあなたを伝える例外のスタッククロールを参照するには、ログ、見なければならない

なぜあなたのコードがクラッシュしているのですか?

スタッククロールが問題に含まれていないということは、あなたが実際にそれを見ていないことを強く示しているからです。あなたの質問への答えとあなたの問題に対する最も可能性の高い解決策は、それを見て、あなたがクラッシュしていると言う理由を見ることです。

関連する問題