2017-03-16 60 views
0

我有一個首選項的問題,我不知道有人可以幫助我嗎? 我正在使用設置屏幕和遊戲屏幕進行遊戲。兩者都需要能夠寫入相同的首選項。該代碼在設置屏幕中工作,它看起來像這樣:在Libgdx中保存兩個類的首選項

public class SettingsScreen implements Screen{ 
private Preferences prefs; 
    final Preferences prefs = Gdx.app.getPreferences("myprefs"); 
    prefs.putFloat("volume", volume); 

並在Gamescreen中出現錯誤。 Gamescreen中的代碼與設置中的代碼相同。這工作:

volume = prefs.getFloat("volume", 1); 

但這並不:

prefs.putFloat("volume", volume); 

我收到以下錯誤:

Exception in thread "LWJGL Application" java.lang.NullPointerException 
    at com.mullenuh.learntoread.Screens.GameScreen$4.clicked(GameScreen.java:259) 
    at com.badlogic.gdx.scenes.scene2d.utils.ClickListener.touchUp(ClickListener.java:89) 
    at com.badlogic.gdx.scenes.scene2d.InputListener.handle(InputListener.java:58) 
    at com.badlogic.gdx.scenes.scene2d.Stage.touchUp(Stage.java:353) 
    at com.badlogic.gdx.backends.lwjgl.LwjglInput.processEvents(LwjglInput.java:332) 
    at com.badlogic.gdx.backends.lwjgl.LwjglApplication.mainLoop(LwjglApplication.java:215) 
    at com.badlogic.gdx.backends.lwjgl.LwjglApplication$1.run(LwjglApplication.java:124) 
+0

需要一些更多的代碼,這是空指針異常,但不清楚什麼是空的。 – Aryan

+0

'volume'是一個Integer對象,你忘記了賦值? – Tenfour04

回答

0

你可能有所謂的構造函數和成員「首選項」局部變量變量也稱爲「prefs」,因爲您只將Preferences實例分配給本地作用域變量,所以它仍然爲空。

private Preferences prefs; // class member variable 
final Preferences prefs = Gdx.app.getPreferences("myprefs"); // local scope variable 

之所以這部作品在您的SettingsScreen可能是因爲你做局部範圍內的首選項的電話。

這就是你可能想:

// class member variable 
private final Preferences prefs; 
// constructor:  
this.prefs = Gdx.app.getPreferences("myprefs"); 
+0

非常感謝您的幫助!現在它工作得很好! – Arnulf

+0

那麼你應該接受答案:) –