Button OnClick上的SharedPreferences的NullPointerException

时间:2013-12-23 23:34:12

标签: java android sharedpreferences

我正在尝试更新用户是否已选中框以不再显示欢迎屏幕的共享首选项。我访问我的共享首选项我的onClick监听器的按钮。我得到一个空指针异常,我不知道如何解决它?

这是我的代码......

public class WelcomeScreenActivity extends Activity {


SharedPreferences mPrefs;
final String welcomeScreenShownPref = "welcomeScreenShown";

public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);

    setContentView(R.layout.welcomescreen);


    final Button button = (Button) findViewById(R.id.welcomecontinue);
    button.setOnClickListener(new View.OnClickListener() {
        public void onClick(View v) {
            CheckBox cb = (CheckBox) findViewById(R.id.welcomecheckbox);
            if(cb.isChecked()){
                SharedPreferences.Editor editor = mPrefs.edit();
                editor.putBoolean(welcomeScreenShownPref, true);
                editor.commit(); // Very important to save the preference
                Intent intent = new Intent(WelcomeScreenActivity.this, MainActivity.class);
                startActivity(intent);
            } else if(!cb.isChecked()){
                SharedPreferences.Editor editor = mPrefs.edit();
                editor.putBoolean(welcomeScreenShownPref, false);
                editor.commit(); // Very important to save the preference
                Intent intent = new Intent(WelcomeScreenActivity.this, MainActivity.class);
                startActivity(intent);
            }
        }
    });


}

}

任何人都可以对此有所了解吗?

2 个答案:

答案 0 :(得分:4)

SharedPreferences mPrefs;

你从未初次化它。虽然你正在使用它

mPrefs.edit();

做类似的事情:

SharedPreferences mPrefs = getSharedPreferences("your_prefs", Activity.MODE_PRIVATE);

使用之前。

答案 1 :(得分:3)

您永远不会将mPrefs设置为调用mPrefs.edit()会抛出NullPointerException

的任何内容