2012-07-28 6 views
0

La fonction contient la principale activité:Java et Android et SharedPreferences et POO

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

La PreferenceConnector classe simplifie le travail avec SharedPreferences. La fonction checkScore() devrait être disponible dans d'autres classes, il est donc nécessaire de faire de la statique. Mais j'ai une erreur:

Cannot use this in a static context 

Que faire et comment résoudre?

Activité:

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; 
    } 
} 

Répondre

0

Vous devez passer contexte de votre activité à la classe PreferenceConnector

Et vous devez faire l'objet de la PreferenceConnector de classe, à ce moment-là, vous pouvez passer votre Contexte de l'activité pour cette classe.

Et ne pas faire la méthode writeInteger (this, "maxscore", scoreCurrent); STATIC

Utilisez-le en créant l'objet de la classe PreferenceConnector dans votre activité principale.

0

Essayez ce code ci-dessous:

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; 
     } 

(ou)

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

Son ne fonctionne pas ( – bosiakov

+0

Post, votre classe Java plein! –

+0

Ok, je suis le code de mon activité posté – bosiakov

0

Vous pouvez tout simplement passer une référence à l'activité de GameScreen à vos autres classes. Alors vous n'avez besoin de rien pour être statique. Vous pouvez simplement appeler myGameScreen.checkScore().