0

(投稿の古いコンテンツを削除しました)

編集#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);

これを修正する方法について何かアイデアはありますか?

4

2 に答える 2

0

宣言のように見えます

エディターエディター;

する必要があります

SharedPreferences.Editorエディター;

于 2012-11-16T21:56:23.263 に答える
0

ついにリスナーを使って直しました!明らかに、アクティビティ内でnullであったgamePanelでした。詳細については、こちらをご覧ください: アクティビティに到達しようとするときのnullpointerexception

于 2012-11-18T11:34:53.210 に答える