2013-12-23 110 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

相關問題