【androidjava】staticを使って変数の値を保持し続ける方法

別のメソッドで値を入れた変数を、ボタンのコールバック関数内で

使う方法を考えました。
こちらがクラス。

public class Profile {
private static double replaceLati;
private static double replaceLong;

public Profile() {
}
public double getLati() {
return replaceLati;
}

public double getLong() {
return replaceLong;
}

public double setLati(double d) {
replaceLati = d;
return replaceLati;
}

public double setLong(double d) {
replaceLong = d;
return replaceLong;
}

}

 

2,3行目のdouble replaceLatiとdouble replaceLongですが、
先頭にprivate staticという修飾子がついています。
この中のstatic修飾子をつけることで、インスタンス化する前に
変数を呼び出せるようになります。
例えば次のように。。。

 

Profile pro = new Profile();
pro.setLati(d);

上記のようにあるメソッド内で、インスタンス化したクラスでsetLatu(d);を
呼び出して値をセットしたとします。そして別のメソッド、つまりボタンを押すことで
発火するコールバック関数で再度getLati();を使いたいとなった時
は以下のように使うことで値を取り出せるようになります。

@OnClick(R.id.confirm)
public void submit() {
Profile pro = new Profile();
//do something
double d = pro.getLati();
}

[/java

] 通常private staticが付いていない時は、インスタンス時にクラスが初期化されるので
setLati(d);した時の値が空もしくはnullになります。
この状態で変数を変更するメソッドが呼ばれた場合、private staticで定義した変数はインスタンス化される前に
呼ばれるので、値を保ったままその値を使うことができるという訳です。
ただクラス内ではグローバル変数と同じ扱いなので、変数を多く使っていないアクティビティなら
わざわざこの技法を使う必要がないかなと感じました。

>株式会社シーポイントラボ

株式会社シーポイントラボ

TEL:053-543-9889
営業時間:9:00~18:00(月〜金)
住所:〒432-8003
   静岡県浜松市中央区和地山3-1-7
   浜松イノベーションキューブ 315
※ご来社の際はインターホンで「316」をお呼びください

CTR IMG