我已經創造了一些的getter setter方法在我的應用程序類像這樣:從我的活動課訪問變量
public class myApp extends Application{
//"Global" variables
private Boolean musicEnabled = true; //Music on or off?
private Boolean soundEnabled = true; //Sound effects on or off?
@Override
public void onCreate() {
// TODO Auto-generated method stub
musicEnabled = true; //Default value for music
soundEnabled = true; //Default value for sound effects
super.onCreate();
}
//Getter and setter for musicEnabled
public Boolean getMusicOption(){
return musicEnabled; //Getter
}
public void setMusicOption(Boolean value){ //Setter
musicEnabled = value;
}
//Getter and setter for soundEnabled
public Boolean getSoundOption(){
return soundEnabled;
}
public void setMusicOptions(Boolean value){
soundEnabled = value;
}
}
然後我得到我的Activity類的價值觀像這樣:
myApp myAppSettings = (myApp)getApplicationContext();
musicEnabled = myAppSettings.getMusicOption();
soundEnabled = myAppSettings.getSoundOption();
這是好的,但我無法弄清楚是如何讓他們和我的相應surfaceView類使用它們?即類啓動:
public class mySView extends SurfaceView implements
SurfaceHolder.Callback {
我已經只有這樣,管理要做到這一點,到目前爲止被他們傳遞到我的surfaceview類通過創建一個方法,如:
public void initialise(Boolean Sound, Boolean Music){
}
然後在這些合格從我的活動類,像這樣:
myView.initialise(musicEnabled, soundEnabled).
這工作,但它似乎有點亂,我的意思是我會需要使用制定者從我的「MyView的」類來設置這些值,所以.... ....有沒有啊我可以直接從我的'myView'類訪問它們,還是必須從Activity類執行此操作?
感謝所有
在我看來,傳遞給構造函數和類方法的參數比你的方法少得多。當不依靠意大利麪代碼訪問隨機全局變量時,易於維護,可擴展性和重用性要好得多。 – Simon 2013-02-27 19:27:06
由於它們是簡單的布爾值,爲什麼不使用SharedPreferences而不是整個Application類呢? – 2013-02-27 19:28:57
@Simon,就這樣我很清楚,你是說只是將我的應用程序類中的變量/值傳遞給我的surfaceview類,就像我已經在做的那樣(但是廢除應用程序類)?謝謝。 – Zippy 2013-02-27 22:59:12