0

関数は、メインのアクティビティに含まれています。

public int checkScore(int scoreCurrent) {
         int maxscore = PreferenceConnector.readInteger(this, "maxscore", 0);
         if (scoreCurrent > maxscore) {
          PreferenceConnector.writeInteger(this, "maxscore",
                         scoreCurrent);
          maxscore = scoreCurrent;
         }
         return maxscore;
        }

クラス PreferenceConnector は、SharedPreferences の作業を簡素化します。関数 checkScore() は他のクラスで使用できるはずなので、静的にする必要があります。しかし、私はエラーがあります:

Cannot use this in a static context

何をし、どのように修正するのですか?

アクティビティ:

public class GameScreen extends Activity {
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);

    }

    public static int checkScore(int scoreCurrent) {
        int maxscore = PreferenceConnector.readInteger(GameScreen.this,
                "maxscore", 0);
        if (scoreCurrent > maxscore) {
            PreferenceConnector.writeInteger(GameScreen.this,
                    "maxscore", scoreCurrent);
            maxscore = scoreCurrent;
        }
        return maxscore;
    }
}
4

3 に答える 3

0

ACTIVITY の CONTEXT をクラス PreferenceConnector に渡す必要があります

クラス PreferenceConnector のオブジェクトを作成する必要があります。その時点で、アクティビティのコンテキストをそのクラスに渡すことができます。

また、メソッドをwriteInteger(this, "maxscore", scoreCurrent); にしないでください。静的

Main Activity に PreferenceConnector クラスのオブジェクトを作成して使用します。

于 2012-07-28T11:06:44.640 に答える
0

以下のコードを試してください:

public int checkScore(int scoreCurrent) {
         int maxscore = PreferenceConnector.readInteger(YourActivityName.this, "maxscore", 0);
         if (scoreCurrent > maxscore) {
          PreferenceConnector.writeInteger(YourActivityName.this, "maxscore",
                         scoreCurrent);
          maxscore = scoreCurrent;
         }
         return maxscore;
        }

(また)

public int checkScore(int scoreCurrent) {
             int maxscore = PreferenceConnector.readInteger(getApplicationContext(), "maxscore", 0);
             if (scoreCurrent > maxscore) {
              PreferenceConnector.writeInteger(getApplicationContext(), "maxscore",
                             scoreCurrent);
              maxscore = scoreCurrent;
             }
             return maxscore;
            }
于 2012-07-28T11:14:36.257 に答える
0

GameScreen アクティビティへの参照を他のクラスに渡すだけです。次に、静的にする必要はありません。を呼び出すだけmyGameScreen.checkScore()です。

于 2012-07-28T15:17:08.060 に答える