Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/187.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android SharedReferences麻烦的nullpointerexception_Android_Nullpointerexception_Sharedpreferences_Android Preferences - Fatal编程技术网

Android SharedReferences麻烦的nullpointerexception

Android SharedReferences麻烦的nullpointerexception,android,nullpointerexception,sharedpreferences,android-preferences,Android,Nullpointerexception,Sharedpreferences,Android Preferences,(删除了帖子的旧内容) 编辑#2:好的,现在我非常清楚,是编辑器试图达到首选项导致了nullpointerexception。这里有关于如何修复它的帮助吗 以下是更新的活动: public SharedPreferences sharedPreferences; Editor editor; @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceSta

(删除了帖子的旧内容)

编辑#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=SharedReferences.edit()。编辑:导致nullpointerexception的是SharedReferences,而不是编辑器

编辑器似乎无法达到首选项:
this.sharedPreferences=getPreferences(MODE\u PRIVATE)


你知道如何解决这个问题吗?

看起来像是声明

编辑

应该是


SharedReferences.Editor

我终于用一个监听器把它修好了!显然是游戏面板在活动中为空。请点击此处了解更多信息:

您为首选项文件声明了名称吗?我想没有。在何处执行此操作?从何处调用
writeSettings
?在调用活动上下文时,它可能已消失。是否可以发布完整的异常输出日志?更新了问题。编辑器似乎无法达到首选项,这就是导致
nullpointerexception
的原因。不过,我不知道如何修复它。我相信这与例外情况无关。编辑器与SharedReferences.Editor相同。这个偏好似乎是空的。这就是我想要的答案。为什么会变为空?所以你的SharedReferences是空的,不是吗?我复制了你的代码减去游戏面板,运行它没有问题。也许你应该检查一下你的游戏面板。运行它应该没有问题,因为还没有任何东西试图访问SharedReferences。我尝试将对writeWin和writeFail函数的调用放在活动的stop和pause函数中,但最终出现了相同的异常。尝试调用
writeWin()
writeFail()
在onStop函数内部调用,您将看到退出应用程序时出现错误。