2013-12-23 71 views
1

我试图更新是否不是用户的共享偏好已经检查一箱不再显示欢迎屏幕。我访问我的共享偏好我的onClick侦听器的按钮。我得到一个空指针异常,我不知道如何解决它?的NullPointerException在按钮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); 
      } 
     } 
    }); 


} 

} 

任何人都可以提供一些线索到这个?

+0

它看起来不像你曾经在那个包含的例子中设置mPrefs。 –

+0

在什么方面是例外? –

回答

4
SharedPreferences mPrefs; 

你从来没有初始化它。虽然你正在使用它

mPrefs.edit(); 

不要做这样的事情:

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

使用它之前。

+0

我尝试过'SharedPreferences mPrefs = new SharedPreferences();'但它错误并且说“不能实例化SharedPreferences类型” – Zack

+0

请参阅我的编辑请 –

+0

'your_prefs'在我的情况是'welcomeScreenShown'? – Zack

3

你永远设置mPrefs任何东西在叫mPrefs.edit()将抛出一个NullPointerException

+0

我已经试过'SharedPreferences mPrefs =新SharedPreferences();'但它的错误,并表示 “无法实例类型SharedPreferences” – Zack

+0

使用'PreferenceManager.getDefaultSharedPreferences(本);'代替。 – Gabe

+0

'SharedPreferences mPrefs = PreferenceManager.getDefaultSharedPreferences(this);'抛出NULL错误。 – Zack

相关问题