我已经创造了一些的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