2012-07-28 125 views
0

函數包含在主要活動:Java和Android和SharedPreferences和OOP

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

回答

0

你要通過你的活動上下文類PreferenceConnector

而且你必須讓類PreferenceConnector的對象,這時候你可以通過你的活動的上下文到該類。

不會使的方法writeInteger(this,「maxscore」,scoreCurrent); STATIC

通過在主活動中創建PreferenceConnector類的對象來使用它。

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

它是不工作( – bosiakov 2012-07-28 11:27:12

+0

發佈,你的完整的java類! – 2012-07-28 11:30:36

+0

好吧,我是我的活動的代碼 – bosiakov 2012-07-28 11:42:52

0

你可以只傳遞給你的其他類的GameScreen活動的參考。那麼你不需要任何東西是靜態的。你可以撥打myGameScreen.checkScore()