(拆卸該職位的舊內容)SharedPreferences麻煩NullPointerException異常
編輯#2:好了,現在我很清楚地表明它試圖達到引起NullPointerException異常偏好的編輯器。如何解決它的任何幫助?
這裏是更新的活動:
public SharedPreferences sharedPreferences;
Editor editor;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
// requesting to turn the title OFF
requestWindowFeature(Window.FEATURE_NO_TITLE);
// making it full screen
getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN, WindowManager.LayoutParams.FLAG_FULLSCREEN);
// set our MainGamePanel as the View
setContentView(new MainGamePanel(this));
// Restore preferences
this.sharedPreferences = getPreferences(MODE_PRIVATE);
this.editor = sharedPreferences.edit();
try {
int wins = GetPreferences("wins");
int fails = GetPreferences("fails");
gamePanel.winn = wins;
gamePanel.failn = fails;
} catch (NullPointerException npe) {
Log.d(TAG, "Nothing to load");
}
//INIT SOUND
mSoundManager.initSounds(getBaseContext());
//SOUNDS
mSoundManager.addSound(1, R.raw.draw);
mSoundManager.addSound(2, R.raw.cheer);
mSoundManager.addSound(3, R.raw.boo);
}
@SuppressWarnings("deprecation")
@Override
public void onBackPressed()
{
super.onBackPressed();
if (gamePanel.gamei==true) {
gamePanel.back();
} else if (gamePanel.menui==true) {
finish();
System.runFinalizersOnExit(true);
System.exit(0);
}
}
public void onPause()
{
super.onPause();
//KILL ALL
finish();
System.runFinalizersOnExit(true);
System.exit(0);
}
@Override
protected void onStop(){
super.onStop();
//KILL ALL
finish();
System.runFinalizersOnExit(true);
System.exit(0);
}
public int GetPreferences(String key) {
return sharedPreferences.getInt(key, 0);
}
public void SavePreferences(String key, int value) {
editor.putInt(key, value);
editor.apply();
}
public void writeWin() {
SavePreferences("wins", gamePanel.winn);
}
public void writeFail() {
SavePreferences("fails", gamePanel.failn);
}
編輯器是什麼原因造成的NullPointerException異常:this.editor = sharedPreferences.edit();
。編輯:這是造成nullpointerexception,而不是編輯器的sharedPreferences。
看起來編輯器無法達到首選項:this.sharedPreferences = getPreferences(MODE_PRIVATE);
。
關於如何解決這個問題的任何想法?
你有沒有爲你的偏好文件聲明一個名字? –
我不這麼認爲。我在哪裏做? –
從哪裏調用'writeSettings'?也許你的活動環境在它被調用的時候已經消失了。 – Tim