[英]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;
}
}
您必須將ACTIVITY的上下文傳遞給PreferenceConnector類
並且您必須創建類PreferenceConnector的對象,這時您可以將Activity的Context傳遞給該類。
並且不要使方法writeInteger(this,“ maxscore”,scoreCurrent); 靜態的
通過在您的主活動中創建PreferenceConnector類的對象來使用它。
試試下面的代碼:
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;
}
您可以將對GameScreen活動的引用傳遞給其他類。 然后,您不需要任何東西都是靜態的。 您可以只調用myGameScreen.checkScore()
。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.