0

Applicationクラスにいくつかのゲッターセッターを次のように作成しました。

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 {

これまで私がこれを行うことができた唯一の方法は、次のようなメソッドを作成して、それらをサーフェスビュークラスに渡すことです。

public void initialise(Boolean Sound, Boolean Music){

}

そして、これらを私のActivityクラスから次のように渡します。

myView.initialise(musicEnabled, soundEnabled).

これは機能しますが、少し面倒なようです。つまり、「myView」クラスのセッターを使用してこれらの値を設定する必要があるので、とにかく自分から直接アクセスできます。 'myView'クラスまたはActivityクラスからこれを行う必要がありますか?

皆さんありがとう

4

3 に答える 3

1

getContext().getApplicationContext()カスタム内から呼び出しSurfaceViewて、上記の例のように型キャストできるはずです。View.getContext()を参照してください。

于 2013-02-27T19:22:43.467 に答える
1

init()たとえば、mySViewのすべてのコンストラクターからメソッドを作成して呼び出すことができます。

initメソッドでは、アクティビティと同じように実行できます。

private void init() {
    myApp myAppSettings = (myApp)getContext().getApplicationContext();   
    musicEnabled = myAppSettings.getMusicOption();
    soundEnabled = myAppSettings.getSoundOption();
}
于 2013-02-27T19:24:03.273 に答える
0

もう1つのオプションは、コンテキストがあるアプリのどこからでもアクセスできるSharedPreferencesに設定を保存することです。このように、アプリの最後の使用からの変更は、次の起動時にロードできるように自動的に保持され、起動ごとに値をデフォルトに戻す必要はありません。

SharedPreferences preferences = PreferenceManager.getDefaultSharedPreferences(context);
于 2013-02-27T19:25:35.973 に答える